Veamos cómo poder autocompletar de manera sencilla el cierre de etiquetas html cuando utilizamos el editor Vim para editar este tipo de archivos.
Muchos de los archivos que edito con Vim, son archivos html, y hace poco encontré la forma de poder ahorrar tiempo haciendo que Vim nos autocomplete el cierre de las etiquetas html de manera automática. Veamos cómo.
Este tutorial se une a la serie de artículos que he dedicado en el blog al editor Vim, que cada vez va creciendo más. Hasta ahora hemos aprendido cosas como:
- Cómo salir de Vim
- Mejora tu experiencia de uso con Vim
- A utilizar las útiles abreviaturas en Vim
- Manejar listas de tareas
- instalar el plugin git-gutter para archivos de git
- Utilizar el editor Kate con en modo Vim
- Utilizar las pestañas en Vim
- Atajos de Vim en nuestra terminal
- Abrir una consola mientras usamos Vim
- El gestor de archivos para la línea de comandos Vifm
- Cómo añadir iconos a Vifm
- Recopilación de comandos útiles de Vim
- Cambiar el mapeado de la tecla Escape en Vim
- Sacarle provecho al «punto» en el editor Vim
Nos ponemos manos a la obra y veamos cómo Vim puede autocompletar el cierre de etiquetas en archivos html.
Lo primero que tenemos que hacer el editar nuestro archivo de configuración .vimrc y añadir la siguiente línea:
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
Ahora cuando en nuestro archivo html tengamos que cerrar alguna etiqueta (<ul><li><p><a> o cualquier otra) solo tenemos que escribir </ y después pulsar la combinación de teclas Ctrl+x Ctrl+o y Vim nos cerrará la etiqueta correspondiente.
Y lo hace de forma anidada, así que irá cerrando «de dentro hacia afuera». Pero ¿por qué no mejorar eso, y en vez de tener que pulsar esa doble combinación de teclas, que Vim nos lo haga de una manera más sencilla? ¡Para eso hemos aprendido a crear abreviaturas!
Volvemos a editar nuestro archivo .vimrc y ahora añadimos una abreviatura. Yo he hecho que cuando escriba tres símbolos < automáticamente lo sustituya por un </ y además «pulse» la combinación Ctrl+x Ctrl+o de la siguiente manera:
:ab <<< </<C-x><C-o>
De esta manera cuando quiera cerrar una etiqueta en un archivo html simplemente tengo que escribir <<< pulsar Enter y Vim se encargará de hacer el resto por mí facilitándome la tarea. Sencillo ¿no?
Pero comprobemos si esto es realmente así:
Una idea bastante ingeniosa. Ctrl-p también auto-completa —aunque es menos potente que el comando que describes—, pero no he podido crear una abreviatura para que me cierre la etiqueta. Probé: ab > sin éxito.
Saludos.
No salió bien:
Es :ab
<C-p> <C-p>>
Para crear la abreviatura en el modo inserción de vim hay que usar «iab» en vez de «ab», por ejemplo:
iab <<< </
Hola.
Gracias por el aporte!!
Saludos.
Funciona, Bien! falto el dar Enter, si podés edita el final donde dice «De esta manera cuando quiera cerrar una etiqueta en un archivo html simplemente tengo que escribir <<< y Vim se encargará de hacer el resto por mí facilitándome la tarea. Sencillo ¿no?»
y agrega dar luego de <<< dar Enter y Vim se encar…..
Gracias por la sugerencia, tiene sentido. Lo he añadido.
Saludos…