¿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.
file
vim
settings
indentation
EBGreen
fuente
fuente

Respuestas:
Puede agregar
.vimarchivos para que se ejecuten siempre que vim cambie a un tipo de archivo en particular.Por ejemplo, tengo un archivo
~/.vim/after/ftplugin/html.vimcon este contenido:Lo que hace que vim use pestañas con un ancho de 2 caracteres para la sangría (la
noexpandtabopción 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 de complementos de tipo de archivo.
fuente
~/.vim/after/ftplugin/html.vimlugar. Pero como otros han señalado a continuación, es mucho mejor agregarloautocmd FileType html setlocal shiftwidth=2 tabstop=2a tu.vimrc.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2)filetype plugin ona su vimrc.Use ftplugins o autocomandos para configurar las opciones.
ftplugin
En
~/.vim/ftplugin/python.vim:Y no olvides activarlos en
~/.vimrc:(
:h ftpluginpara más información)autocomando
En
~/.vimrc:Puede reemplazar cualquiera de los comandos largos o ajustes con sus versiones cortas:
autocmd:ausetlocal:setlshiftwidth:swtabstop:tssofttabstop:stsexpandtab:etTambién sugeriría aprender la diferencia entre
tabstopysofttabstop. Mucha gente no lo sabesofttabstop.fuente
swes corto parasoftwidth,stses corto parasofttabstop,etes corto paraexpandtab,setles corto parasetlocal, yaues corto paraautocmd. Puede usar las formas largas en lugar de las formas cortas.swexpande ashiftwidthmás que asoftwidth.edite su
~/.vimrcy agregue diferentes tipos de archivos para diferentes sangrías, por ejemplo, quierohtml/rbsangría para 2 espacios yjs/coffeesangría de archivos para 4 espacios:consulte: Configuración de las preferencias de espacios en blanco de Vim por tipo de archivo
fuente
":)'da error en todos los vim de mi Linux. (7.3+, 8.0 ...)", lo que significa que no lo cierre con otro". Aunque no estoy seguro de por qué lo comenté.'pero no se fue"sin derecha"@. @Ponga comandos autocmd basados en el sufijo de archivo en su ~ / .vimrc
Los comandos que está buscando son probablemente ts = y sw =
fuente
FileType?Normalmente trabajo con
expandtabset, pero eso es malo para los makefiles. Recientemente agregué:al final de mi archivo .vimrc y reconoce Makefile, makefile y * .mk como makefiles y no expande las pestañas. Presumiblemente, puedes extender esto.
fuente
Personalmente, uso esta configuración en .vimrc:
fuente
Esto podría ser conocido por la mayoría de nosotros, pero de todos modos (me sorprendió la primera vez): Hacer
:set et(:setexpandtabs) no cambia las pestañas que ya existen en el archivo, uno tiene que hacerlo:retab. Por ejemplo:y las pestañas en el archivo se reemplazan por suficientes espacios. Para volver a tener pestañas simplemente haz:
fuente
Hoy, puedes probar editorconfig , también hay un complemento vim para ello. Con esto, no solo puede cambiar el tamaño de la sangría en vim, sino que en muchos otros editores, mantener estilos de codificación consistentes.
A continuación se muestra una configuración de editor simple, como puede ver, los archivos de Python tendrán 4 espacios para sangría, y los archivos de plantilla pug solo tendrán 2.
fuente
Si bien puede configurar la sangría de Vim muy bien usando el complemento de sangría o manualmente usando la configuración, le recomiendo usar un script de Python llamado Vindect que establece automáticamente las configuraciones relevantes para usted cuando abre un archivo de Python. Use este consejo para hacer que usar Vindect sea aún más efectivo. Cuando comencé a editar archivos de Python creados por otros con varios estilos de sangría (tabulación versus espacio y número de espacios), fue increíblemente frustrante. Pero Vindect junto con este archivo de sangría
También recomiendo:
fuente
Para aquellos que usan
autocmd, es una buena práctica agruparlos. Si una agrupación está relacionada con la detección de tipo de archivo, es posible que tenga algo como esto:Las agrupaciones ayudan a mantener el
.vimrcorganización, especialmente una vez que un tipo de archivo tiene varias reglas asociadas. En el ejemplo anterior, se define un acceso directo de comentario específico para archivos .c.La llamada inicial a
autocmd!le dice a vim que elimine cualquier comando automático previamente definido en dicho grupo. Esto evitará la definición duplicada si.vimrcse obtiene de nuevo. Vea el:help augrouppara más información.fuente
Yo uso una utilidad que escribí en C llamada
autotab. Analiza los primeros miles de líneas de un archivo que carga y determina los valores para los parámetros de Vimshiftwidth,tabstopyexpandtab.Esto se compila utilizando, por ejemplo,
gcc -O autotab.c -o autotab. Las instrucciones para integrarse con Vim se encuentran en el encabezado del comentario en la parte superior.Autotab es bastante inteligente, pero puede confundirse de vez en cuando, en particular porque se ha mantenido de manera inconsistente utilizando diferentes estilos de sangría.
Si un archivo evidentemente usa pestañas, o una combinación de pestañas y espacios, para la sangría, Autotab descubrirá qué tamaño de pestaña se está usando considerando factores como la alineación de elementos internos a través de líneas sucesivas, como comentarios.
Funciona para una variedad de lenguajes de programación, y es indulgente con los elementos "fuera de banda" que no obedecen a los incrementos de sangría, como las directivas de preprocesamiento C, las etiquetas de instrucción C, sin mencionar las obvias líneas en blanco.
fuente