¿Cómo puedo cambiar la sangría predeterminada según el tipo de archivo?
34
Me gustaría tener diferentes hendiduras según el tipo de archivo en el que estoy trabajando. Por ejemplo, trabajando en un .carchivo, me gustaría que mi sangría sea de 4 espacios. En los .htmlarchivos me gustaría (tengo que) trabajar con pestañas.
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 onen 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:
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.
¿Debo activar el ftplugin de alguna manera o la creación de los archivos lo activará automáticamente?
DeltaLima
Asegúrate de tener filetype plugin indent onen tu vimrc.
romainl
1
@DeltaLima vim tiene una ruta que sigue para verificar la configuración. Mientras filetype plugin onesté configurado, la ruta de vim incluye los archivos ftplugin/<filetype>.vimy after/ftplugin/<filetype>/vimen su ruta.
davidlowryduda
@DeltaLima, mira mi edición.
romainl
14
Puede hacer esto con los comandos automáticos en su .vimrc.
Por ejemplo, tengo una función html_like_modeque 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 4para sus archivos * .c.
augrouple permite agrupar comandos automáticos relacionados en grupos con nombre. (Consulte aquí para obtener información sobre los grupos de autocomando). Utilizamos augroups para agregar autocomandos de ~/.vimrcuna 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
filetype plugin indent on
en tuvimrc
.filetype plugin on
esté configurado, la ruta de vim incluye los archivosftplugin/<filetype>.vim
yafter/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:Eso elimina la extensión del archivo. También puede quitar el tipo de archivo, si lo tiene habilitado:
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.fuente
augroup
le permite agrupar comandos automáticos relacionados en grupos con nombre. (Consulte aquí para obtener información sobre los grupos de autocomando). Utilizamosaugroup
s para agregar autocomandos de~/.vimrc
una manera que no agregue un duplicado cada vez que lo obtengamos.fuente
Usado autocmd y FileType
fuente