Respuestas:
El mejor método es poner esa configuración ~/.vim/after/ftplugin/<filetype>.vim
.
Para HTML (suponiendo que desee pestañas de 4 caracteres de ancho):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
El uso de un ftplugin es preferible al uso de los comandos automáticos porque Vim ya realiza comprobaciones de tipo de archivo por sí mismo y ya intenta obtener el ftplugin adecuado, por lo que no hay razón para forzar aún más comprobaciones y reimplementar la rueda.
- editar -
Asumiendo que tiene filetype plugin on
en su vimrc
, lo que debería, Vim intentará detectar el tipo de archivo de los archivos que edita y, una vez que se encuentre el tipo de archivo correcto y se configure para el búfer, intente obtener el ftplugin correspondiente en estas ubicaciones estándar:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Todo eso sucede automáticamente , por lo que, si Vim reconoce su tipo de archivo, no hay absolutamente ninguna razón para agregar ninguna lógica de detección de tipo de archivo: simplemente agregue su configuración al ftplugin correcto y estará bien.
filetype plugin indent on
en tu vimrc
.
filetype plugin on
esté configurado, la ruta de vim incluye los archivos ftplugin/<filetype>.vim
y after/ftplugin/<filetype>/vim
en su ruta.
Puede hacer esto con los comandos automáticos en su .vimrc
.
Por ejemplo, tengo una función html_like_mode
que configura varias cosas para editar archivos HTML. En mi .vimrc
, tengo:
au BufNewFile,BufRead *.html call s:html_like_mode()
Eso elimina la extensión del archivo. También puede quitar el tipo de archivo, si lo tiene habilitado:
au FileType perl setlocal equalprg=perltidy
Como puede ver, puede hacer que haga cualquier comando allí. Así que podría hacer fácilmente un setlocal shiftwidth 4
para sus archivos * .c.
augroup
le permite agrupar comandos automáticos relacionados en grupos con nombre. (Consulte aquí para obtener información sobre los grupos de autocomando). Utilizamos augroup
s para agregar autocomandos de ~/.vimrc
una manera que no agregue un duplicado cada vez que lo obtengamos.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4