29

Mar

Publicado por: Alex Magaz | development | Software | techtips

Cómo ahorrar tiempo programando con Vim

Vim es un editor modal, es decir, se trata de un editor que solo se sirve del teclado para realizar todas las funciones. Esto es realmente útil en algunos casos pues agiliza procesos de edición de texto.

Vim de “Vi Improved” en inglés, es una versión mejorada del editor de texto Vi. Vim, fue presentado en el año 1991 por Bran Moolenaar y desde entonces no ha dejado de presentar mejoras. Pero, ¿por qué usarlo?, ¿qué te puede aportar a la hora de programar? y ¿cómo funciona?, son algunas de las preguntas que contestaré en este artículo.

Pero primero… ¿Por qué Vim?

Mucha gente no ha usado nunca Vim. Supongo que se ve como una de esas aplicaciones antiguas o una complicación innecesaria que ya pierde el sentido con los editores e IDEs modernos.
A primera vista, no negaré que es un editor “poco atractivo” y difícil de usar. Más que curva de aprendizaje, tal vez podría hablar de una pared contra la que vas a chocar en varias ocasiones.
Aunque si se empieza con un tutorial que te ayude a conocerlo mejor y ejerces la práctica, poco a poco, acabarás ganando mucha velocidad al editar texto. Sobre todo en referencia al código fuente.

¿Cómo funciona Vim?

Vim es un editor modal. Tiene varios modos entre los que puedes moverte dependiendo de lo que quieras hacer.
Por defecto, estarás en modo “normal”. En este modo, las teclas no introducen texto, en su lugar tienen asignados comandos. Por ejemplo, las teclas “H”, “J”, “K” y “L” mueven el cursor por la pantalla (izquierda, abajo, arriba y derecha respectivamente).

Para editar, entra en modo edición con la tecla “I”, introduce el texto del mismo modo que con cualquier otro editor y luego, vuelve al modo normal con “Esc”.

Esto, aunque pueda parecer engorroso, es una gran ventaja. Una vez dentro, se puede hacer prácticamente cualquier acción sin mover las manos de la posición de escritura, por lo que la edición será más cómoda y rápida, pues ahorrarás el tiempo de colocar las manos en su sitio de nuevo.

Para empezar a usarlo, primero se debe instalar (paquete de Ubuntu vim-gnome) y ejecutar gvimtutor. Esto abrirá un tutorial de menos de 30 minutos con el que aprenderás lo básico.
Si dedicas una hora diaria durante una semana tendrás más que suficiente para sentirte cómodo con el editor. A partir de ahí, tus habilidades irán creciendo hasta que edites más rápido que con un editor normal, ahí empezarás a recuperar el tiempo invertido.

Ejemplos de su utilidad

Acciones como “mover el cursor con las letras” o “entrar y salir del modo edición para introducir texto” por sí solas difícilmente justificarían el uso de Vim. Por ello, te mostraré algunos ejemplos de los beneficios que aporta este programa para la edición de código.

Ejemplo 1: Cambiar una palabra

Con el cursor en la posición señalada (^) presiona las teclas ciwworld, quedando la línea de abajo. ciw sería el comando [c]hange [i]nner [w]ord. Elimina la palabra y deja en modo edición. Luego, introduce el nuevo texto y presiona para volver al modo normal.
Antes:

function message() {
 println("Hello hello!")
                 ^

Teclea ciwworld

Después:

function message() {

 println("Hello world!")
                    ^

Ejemplo 2: Cambiar texto entrecomillado: ci”

Antes:

function message() {
println("System error")
                ^

Teclea ci”Epic fail!
Después:

function message() {
 println("Epic fail!")
                   ^

Ejemplo 3: Cambiar contenido de etiqueta XML/HTML: cit

Antes:

<body>
<h1>Home page</h1>
                ^

Teclea citInicio
Después:

<body>
<h1>Inicio</h1>
         ^ 

También se pueden cambiar bloques delimitados por “{” y “}” con ciB o párrafos con cip. Se pueden usar la “d” en lugar de la “c” para eliminar, sin entrar en modo edición.
Se puede repetir cualquier comando con un número adelante. Por ejemplo, la “x” sirve para eliminar un carácter, en este caso lo usaremos para quitar tres letras:

function message() {
println("Heloooo");
            ^

Teclea 3x

function message() {
println("Helo");
            ^

Se pueden combinar varios comandos:

function main() {
service.foo.bar().baz();
        ^

Teclea c2t.jarl

Después:

function main() {

service.jarl.baz();
           ^

Vim en IntelliJ

El modo Vim en el IntelliJ lo proporciona el plugin “IdeaVim”. Simplemente deberás instalar y reiniciar el “IDE” para empezar a usarlo. En este enlace podrás descargarlo.

La función :help se abrirá en el navegador como ayuda del Vim. Recomiendo echarle un vistazo de vez en cuando para aprender nuevos comandos.

Si en cualquier momento quisieras cambiar al editor normal del IntelliJ, por ejemplo para compartir teclado con un compañero/a, puedes hacerlo con la combinación “Ctrl-Alt-V” (Tools > Vim Emulator).

La configuración del editor se controla desde el fichero de configuración ~/.ideavimrc. Te dejo un gist con mi configuración donde podrás encontrar cosas útiles, entre ellos, los mapeos de teclas.

Los mapeos permiten cambiar los comandos asignados a las teclas y crear de nuevos. Aunque, como con todo, habrá que vigilar de no personalizar demasiado.

Existen combinaciones de teclas que entran en conflicto con las del IDE. Se pueden elegir cuáles prevalecerán desde la configuración (File > Settings > Other Settings > Vim Emulation).

Entonces, podemos concluir que…

Vim es un editor con un funcionamiento totalmente diferente del resto. Esa es a la vez su principal ventaja y, curiosamente, su desventaja.
Si te despierta la más mínima curiosidad, te recomiendo aprender a usarlo. En el peor de los casos, si no te acaba convenciendo, solo habrás perdido unas horas; en caso contrario, será un gran descubrimiento.

Lo que he explicado aquí es solo la punta del iceberg. Vim tiene infinidad de comandos y combinaciones muy útiles. Lo bueno es que se puede ir aprendiendo a poco a poco sin mucha dificultad.
Para que te hagas una idea: Durante muchos años aprendía prácticamente a diario alguna u otra cosa nueva con la que me hacía más productivo. Hoy, 16 años más tarde, sigo aprendiendo diariamente.

¡Así que ya sabes, si te ha parecido interesante compártelo para que otros puedan aprender algo nuevo hoy también!

 

Barcelona
Passeig Gaiolà 13
+34 933 801 144
Lleida
Carrer Agustins 7
+34 973 988 222
Andorra
(Escaldes-Engordany)
Parc de la Mola 10, AD700
Bogota
Carrera 9A #99-07 Piso 9. Despacho 02
Torre la Equidad