VIM, ese gran desconocido. Parte I.
Juanma Cabello Colaboraciones 05/06/2017
Una de las herramientas principales para llevar a cabo nuestra labor es el editor de texto que usemos para programar.
Puede parecer un tema muy trivial pero elegir el editor perfecto es complicado. También resulta ser un tema bastante controvertido porque todo el mundo tiene su editor favorito y lo defiende a capa y espada.
En mi caso, uso VIM. Si, si: el editor VIM, el de terminal. Ese del que muy pocos saben salir. Mi propósito con este post es el de darte una introducción rápida para que puedas contemplar toda la potencia de este magnífico editor.
Instalación
Es posible que VIM ya venga de serie en tu sistema. En cualquier caso, te recomiendo que lo instales haciendo uso de homebrew o linuxbrew para hacerte con la última versión:
$ brew install vim
Si eres usuario de Windows puedes bajarlo desde esta web.
Primeros pasos
La forma de interactuar con VIM al principio puede resultar algo… Extraña. Pero basta pasar un rato con él para darse cuenta de las ventajas que tiene este nuevo flujo de trabajo.
Hablo, cómo no, de los famosos modos de edición de VIM. Los más importantes que voy a enseñarte son:
- Normal
- Inserción
- Visual
Para entrar en modo inserción es tan fácil como pulsar i y para el modo visual v (que sirve básicamente para seleccionar texto). Para volver siempre al modo normal se usa la tecla esc.
Aunque hay algunos trucos como por ejemplo la tecla I que inicia la inserción y lleva el cursor al comienzo de la línea o la tecla a que lo que hace es posicionar el cursor delante de la letra actual y entrar en modo inserción o la tecla A que lo que hace es posicionar al final de la línea y entrar en modo inserción. Otras pulsaciones interesantes son o y O para añadir una nueva línea debajo o arriba de la línea actual y entrar en modo inserción.
Mención honorífica a las teclas h, j, k y l que sirven, tradicionalmente, para desplazar el cursor a la izquierda, abajo, arriba y derecha respectivamente. Es mención honorífica porque se suelen utilizar las teclas de cursor y listo. También dispones de las teclas w para ir avanzando palabra a palabra y la tecla b para ir retrocediendo palabra a palabra.
Seguramente estés diciendo "¡Espera, espera! ¿Me estás diciendo que VIM funciona por carácter introducido en lugar de por tecla pulsada?" ¡Vaya! Eres una persona avispada. Pues sí: VIM es capaz de diferenciar entre pulsar a y A.
Las últimas teclas que te quiero enseñar son la tecla x que se usa para cortar, la tecla y que sirve para copiar y p que es para pegar por delante del cursor. También está la tecla P que lo que hace es pegar por detrás del cursor.
Por supuesto, también podemos deshacer con u y rehacer con ctrl+r.
Una de las mejores cosas de que VIM trabaje con carácteres en lugar de teclas propiamente dicho es que puedes concatenar acciones. Por ejemplo, si quieres copiar tres líneas por debajo del cursor sería tan fácil como y3j, ir a la línea donde quieras pegar y p.
Las pulsaciones < y > sirven para desindentar e indentar las líneas seleccionadas.
Algunas teclas realizan la acción sobre la línea actual en caso de pulsar dos veces. Por ejemplo: yy copia la línea actual y xx corta la línea actual.
Personalización del editor
VIM se puede configurar definiendo el valor de ciertas propiedades en el archivo ~/.vimrc
.
Aquí te dejo una configuración básica, pero que mejora sustancialmente la labor de introducir código:
syntax on " Para habilitar el tintado de código set encoding=utf-8 " Fuerza la codificación del guardado del archivo a utf8 set tabstop=4 " Establece el espaciado de las tabulaciones a cuatro carácteres set shiftwidth=4 " Establece el número de espacios cuando se reindenta la línea set expandtab " Inserta espacios en lugar de tabulaciones al tabular set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,nbsp:·" Define la lista de carácteres no visibles set list " Muestra los carácteres no visibles set colorcolumn=80 " Muestra una columna que especifica un límite de longitud de la línea establecido por nosotros set cursorline " Ilumina la línea actual en la que te encuentres set number " Muestra los números de líneas en un margen izquierdo set relativenumber " En combinación con lo anterior hace qua las líneas anteriores y posteriores muestren la distancia en líneas respecto a la actual set scrolloff=3 " Especifica el número de líneas antes de llegar al final del texto visible desde el que se empezará a hacer scroll
Conclusión
Como ya habrás visto, VIM es más de lo que aparenta ser. En la próxima entrega veremos cómo expandir las posibilidades del editor hasta convertirlo en un IDE completo gracias a los maravillosos plugins que salen de la comunidad.
¿Y tu? ¿Has usado VIM antes? ¿Conocías todas estas cosas de VIM? ¡Dínoslo en los comentarios!
Foto: Arrow Keys de stwn