¿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
.vim
archivos para que se ejecuten siempre que vim cambie a un tipo de archivo en particular.Por ejemplo, tengo un archivo
~/.vim/after/ftplugin/html.vim
con este contenido:Lo que hace que vim use pestañas con un ancho de 2 caracteres para la sangría (la
noexpandtab
opció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.vim
lugar. Pero como otros han señalado a continuación, es mucho mejor agregarloautocmd FileType html setlocal shiftwidth=2 tabstop=2
a tu.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
a su vimrc.Use ftplugins o autocomandos para configurar las opciones.
ftplugin
En
~/.vim/ftplugin/python.vim:
Y no olvides activarlos en
~/.vimrc
:(
:h ftplugin
para más información)autocomando
En
~/.vimrc
:Puede reemplazar cualquiera de los comandos largos o ajustes con sus versiones cortas:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
También sugeriría aprender la diferencia entre
tabstop
ysofttabstop
. Mucha gente no lo sabesofttabstop
.fuente
sw
es corto parasoftwidth
,sts
es corto parasofttabstop
,et
es corto paraexpandtab
,setl
es corto parasetlocal
, yau
es corto paraautocmd
. Puede usar las formas largas en lugar de las formas cortas.sw
expande ashiftwidth
más que asoftwidth
.edite su
~/.vimrc
y agregue diferentes tipos de archivos para diferentes sangrías, por ejemplo, quierohtml/rb
sangría para 2 espacios yjs/coffee
sangrí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
expandtab
set, 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
(:set
expandtabs) 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
.vimrc
organizació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.vimrc
se obtiene de nuevo. Vea el:help augroup
para 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
,tabstop
yexpandtab
.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