¿Cómo ejecuto un comando vim específico al abrir un archivo con una extensión determinada?

9

Quiero que todos mis archivos que terminen .textengan una longitud de línea 80. Entonces, cada vez que abro un .texarchivo en vim, escribo :set tw=79. ¿Qué pondría en mi .vimrc para automatizar esto?

¿Qué pasa si yo quería que el trabajo con una lista específica de tipos de archivos, por ejemplo, .md, .txt, y .tex?

JeremyKun
fuente

Respuestas:

10

En lugar de verificar la extensión y configurar el ancho de texto en consecuencia, simplemente puede crear un tex.vimarchivo (el nombre debe coincidir con el tipo de archivo) en .vim/ftplugin/o para Windows $HOME/vimfiles/ftplugin/y establecer el ancho de texto allí. Esto lo ayudará a mantener limpio su .vimrc.

Su .vim/ftplugin/tex.vimarchivo se vería así:

setlocal textwidth=79

Como dijo 8bittree en los comentarios, también debe habilitarlo filetype pluginsen su vimrc (no sé por qué alguien no lo habilitaría):

filetype plugin on

Lea esto para obtener más información: http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean

ap0
fuente
2
También querrás asegurarte de que los complementos de tipo de archivo estén habilitados en tu .vimrccon filetype plugin on.
8bittree
8

En ~/.vimrcusted puede agregar la siguiente línea:

au BufReadPost,BufNewFile *.md,*.txt,*.tex setlocal tw=79

Para comandos adicionales, sepárelos por |.

Esto establecerá su configuración justo después de leer el archivo o abrir un nuevo archivo en el búfer para extensiones específicas.

kenorb
fuente
2
setpuede tomar cualquier cantidad de configuraciones. Algo así set tw=79 nowrap formatoptions+=jfuncionará. No es necesario un |(a menos que desee llamar a un comando diferente, por supuesto) ;-)
Martin Tournoij