Inicio > Programación, vim > Vim: Establecer opciones según tipo de archivo

Vim: Establecer opciones según tipo de archivo

Jueves, 8 de octubre de 2009 Dejar un comentario Ir a comentarios

vim-editor_logo

Hoy os quiero hablar de otra cosa que he descubierto sobre vim no hace mucho. Como ya sabréis a estas alturas si lleváis un tiempo usando vim, o si habéis leído alguna de las entradas en el blog que he ido colgando sobre este magnifico editor, el programa nos permite configurar sus opciones mediante el fichero de configuración ~/.vimrc. Podemos configurar la identación de los ficheros, el esquema de color, diccionarios, atajos de teclado, etc. Pero el problema está en que esta configuración se aplica a todos los ficheros que editamos y esto nos puede presentar problemas.

Pongo un ejemplo. Tenemos un montón de opciones activadas para que nuestra experiencia programando en C/C++ sea lo más agradable posible, resaltado de sintaxis, autocompletado de código, diversos plugins, configuración de idioma en inglés, etc. Ahora queremos escribir un documento en \LaTeX en español con vim junto al plugin Latex-suite, pero nos damos cuenta de que al empezar a escribir, la configuración del idioma está en inglés, la identación es molesta etc.

¿Cuál es la solución? Pues como seguro más de uno habréis pensado, establecer diferentes opciones según que tipo de archivos. Al principio no sabía si esto se podía hacer, pero me encontré un fichero de configuración de vim por internet hace tiempo donde se hacía esto, y a partir de ahí me puse a investigar.

Autocmd

El comando autocmd, va a permitirnos establecer opciones para según que tipo de archivos. La sintaxis de este comando es la siguiente:

 :au[tocmd] [group] {event} {pat} [nested] {cmd}
 

Cómo podréis intuir si estáis acostumbrados a tratar con lenguajes de programación, las partes entre corchetes son opcionales, mientras que las que están entre llaves son obligatorias.

Una de las cosas más importantes a saber de este comando son los eventos que maneja. Hay una larga lista de estos que podéis encontrar aquí, pero de momento los que yo uso son los siguientes:

  • BufRead: el evento que se activa cuando empezamos a editar un fichero nuevo que no existía previamente.
  • BufNewFile: el evento que se activa cuando leemos un nuevo búfer.

Podemos introducir varios eventos separados por comas:

 :au[tocmd] [group] BufRead,BufNewFile {pat} [nested] {cmd}
 

Después hay indicar el patrón del tipo de archivos a los que queremos asignarles un comando. Lo más sencillo es especificar una lista de posibles extensiones de archivos con las que queremos tratar de una forma similar a la siguiente:

:au[tocmd] [group] BufRead,BufNewFile *.c,*.cpp,*.h  [nested] {cmd}

Por último se indica el comando que queremos establecer para según que tipo de evento y que tipo de ficheros. Os pongo algunos ejemplos:

" Reemplazar tabuladores con el número equivalente de espacios en blanco.
" Python: yes
" C: no
" Makefile: no
au BufRead,BufNewFile *.py,*.pyw set expandtab
au BufRead,BufNewFile *.c,*.cpp,*.h set noexpandtab
au BufRead,BufNewFile Makefile* set noexpandtab

" Diccionario.
" Python: en.
" C: en.
" Tex: es.
au BufRead,BufNewFile *.c,*.cpp,*.h,*.py,*.pyc,*.sh set spell
au BufRead,BufNewFile *.tex set spl=es spell
GD Star Rating
loading...
Vim: Establecer opciones según tipo de archivo, 10.0 out of 10 based on 1 rating
Share
  1. Sin comentarios aún.
  1. Sin trackbacks aún.