salir por editar desde consola con archivo file vim settings indentation

file - por - salir de vi linux



Cambiando el comportamiento de la sangría de Vim por tipo de archivo (10)

¿Podría alguien explicarme en términos simples la forma más fácil de cambiar el comportamiento de sangrado de Vim en función del tipo de archivo? Por ejemplo, si abro un archivo de Python, debería sangrar con 2 espacios, pero si abro un script de Powershell debería usar 4 espacios.


Esto puede ser conocido por la mayoría de nosotros, pero de todos modos (la primera vez que me sorprendí): Doing :set et ( :set expandtabs) no cambia las pestañas que ya existen en el archivo, uno tiene que hacerlo :retab . Por ejemplo:

:set et :retab

y las pestañas en el archivo son reemplazadas por espacios suficientes. Para tener pestañas atrás simplemente haz:

:set noet :retab


Hoy, puedes probar editorconfig , también hay un plugin vim para ello. Con esto, puede no solo cambiar el tamaño de sangría en vim, sino que en muchos otros editores, mantener estilos de codificación coherentes.

A continuación se muestra un simple editorconfig, como puede ver, los archivos de python tendrán 4 espacios para la sangría, y los archivos de plantilla de pug solo tendrán 2.

# 4 space indentation for python files [*.py] indent_style = space indent_size = 4 # 2 space indentation for pug templates [*.pug] indent_size = 2


Normalmente trabajo con el conjunto expandtab , pero eso es malo para makefiles. Recientemente agregué:

:autocmd FileType make set noexpandtab

hasta el final de mi archivo .vimrc y reconoce Makefile, makefile y * .mk como makefiles y no expande las pestañas. Presumiblemente, puedes extender esto.


Ponga comandos autocmd basados ​​en el sufijo de archivo en su ~ / .vimrc

autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab autocmd BufRead,BufNewFile *.pl syntax on

Los comandos que estás buscando son probablemente ts = y sw =


Si bien puede configurar la sangría de Vim simplemente usando el complemento de sangría o manualmente usando la configuración, le recomiendo que use un script de Python llamado Vindect que establece automáticamente la configuración relevante cuando abre un archivo de Python. Utilice este consejo para que el uso de Vindect sea aún más efectivo. Cuando comencé a editar archivos de Python creados por otros con varios estilos de sangrado (tabulador vs. espacio y número de espacios), fue increíblemente frustrante. Pero Vindect junto con este archivo de sangría

También recomiendo:


Siempre me sorprenden las personas que cambian el tamaño de las pestañas para diferentes tipos de archivos. ¿Qué demonios haces cuando miras un archivo usando menos?

Personalmente, uso estas configuraciones en .vimrc:

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab


Use ftplugins o autocomandos para establecer opciones. ( :h ftplugin para más información)

En ~/.vim/ftplugin/python.vim:

setlocal sw=2 sts=2 et

Y no te olvides de encenderlos en ~/.vimrc

filetype plugin indent on

O en ~/.vimrc

au FileType python setl sw=2 sts=2 et

También sugeriría aprender la diferencia entre ''ts'' y ''sts'' . Mucha gente no sabe sobre ''sts'' .


Yo uso una utilidad que escribí en C llamada autotab . Analiza las primeras miles de líneas de un archivo que carga y determina los valores de los parámetros shiftwidth , tabstop y expandtab .

Esto se compila utilizando, por ejemplo, gcc -O autotab.c -o autotab . Las instrucciones para integrarse con Vim se encuentran en el encabezado de comentario en la parte superior.

Autotab es bastante inteligente, pero puede confundirse de vez en cuando, en particular debido a que se han mantenido inconsistentemente utilizando diferentes estilos de sangría.

Si, evidentemente, un archivo utiliza pestañas, o una combinación de tabulaciones y espacios, para la sangría, Autotab determinará qué tamaño de pestaña se está utilizando al considerar factores como la alineación de elementos internos en líneas sucesivas, como comentarios.

Funciona para una variedad de lenguajes de programación, y perdona los elementos "fuera de banda" que no obedecen a los incrementos de sangría, como las directivas de preprocesamiento de C, las etiquetas de declaración C, sin mencionar las líneas en blanco obvias.


edite su ~/.vimrc , y agregue diferentes tipos de archivos para diferentes sangrías, por ejemplo, quiero sangría html/rb para 2 espacios, y sangría js/coffee para 4 espacios:

" by default, the indent is 2 spaces. set shiftwidth=2 set softtabstop=2 set tabstop=2 " for html/rb files, 2 spaces autocmd Filetype html setlocal ts=2 sw=2 expandtab autocmd Filetype ruby setlocal ts=2 sw=2 expandtab " for js/coffee/jade files, 4 spaces autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab

consulte: Configuración de las preferencias de espacio en blanco de Vim por tipo de archivo


Puede agregar archivos .vim para que se ejecuten cada vez que vim cambie a un tipo de archivo en particular.

Por ejemplo, tengo un archivo ~/.vim/after/ftplugin/html.vim con este contenido:

setlocal shiftwidth=2 setlocal tabstop=2

Lo que hace que vim use pestañas con un ancho de 2 caracteres para la sangría (la opción noexpandtab se establece globalmente en otra parte de mi configuración).

Esto se describe aquí: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , desplácese hacia abajo hasta la sección sobre complementos de tipo de archivo.