Vim, el $EDITOR

Estándar

Empezamos los posts reales con un tema que personalmente me encanta, los editores de código. Hay tantos y tanta variedad donde elegir que, a menudo, no sabemos realmente cual escoger a la hora de programar nuestras aplicaciones. Algunas veces simplemente tecleamos en lo que primero se nos venga a la vista en nuestro sistema operativo favorito (aquellos tiempos de gedit…), pero por lo general es una buena idea pararnos a pensar en qué editor nos va a hacer más felices a la hora de picar un poco de código.

Existen muchas alternativas a escoger en este tema, pero generalmente distinguimos entre dos grandes categorías, los IDE’s y los editores corrientes de texto. No vamos a pararnos en discutir la linea divisoria entre ambas en este post, pero si que vamos a centrarnos en un editor muy potente que puede ser muy odiado o muy querido.

Vim es el editor en el que nos centraremos en este post, como bien habréis podido adivinar por el título. Se trata de un editor en el que todo se puede hacer a través del teclado liberando toda nuestra dependencia del ratón. Vim además intenta centrar nuestra posición a la hora de escribir en lo que los anglosajones llaman home row, la fila central de nuestro teclado, aumentando así la productividad a la hora de escribir. Esto está motivado por la idea de que cuanto más tengas que alejar de esta fila mayor concentración perderás de lo que estás haciendo y por tanto peor será tu edición. Cabe decir que el soporte para el uso del ratón está ámpliamente soportado por Vim y existen opciones en su fichero de configuración para habilitarlo.

Además Vim soporta características comunes en los editores de código comunes como es el resaltado de código fuente que cambia según el tipo de fichero que estemos editando, además de sangrado inteligente y autocompletado de código (tanto de ocurrencias en el fichero como de documentación del propio lenguaje). La extensibilidad de Vim se hace más patente aún cuando añadimos pequeños trozos de código que agregan funcionalidades al programa y que son los conocidos plugins escritos principalmente en vimscript, pero que en las versiones más modernas de Vim pueden ser escritos en distintos lenguajes de script como TCL o Lua más recientemente.

Antes de pasar a describir las características del editor he de advertir es que Vim (Vi Improved) tiene una curva de aprendizaje bastante alta y escarpada dado que cambia la forma de escribir y la forma de ver al editor en si mismo. Lo primero que me asustó principalmente cuando abrí la primera vez este editor, en modo consola, fue que no podía escribir (que era lo que quería principalmente), que pulsara la tecla que pulsara esta no se vería reflejada en la pantalla. Esto nos lleva a la primera parada en el aprendizaje de Vim.

Modos

Vim es lo que podemos llamar un editor modal (del inglés modal editor) que se pasaron de moda hace un tiempo y que son bastante útiles para brindar al usuario una interacción con distintos modos de funcionamiento del editor. Principalmente trabajaremos con tres modos en Vim: el modo normal, el modo insertar y el visual.

El modo normal es el modo en el que arranca Vim y desde el cual la escritura no es posible. La funcionalidad de este modo es la de usar comandos del editor para realizar tareas en/con el fichero, por ejemplo movernos entre las distintas líneas del fichero o eliminar una línea completa de éste. Más adelante entraremos en distintos comandos útiles para trabajar con ficheros estando en el modo normal de Vim.

El modo insertar no tiene pérdida, como diría cualquier taxista, es aquel en que realmente escribimos en el buffer (más tarde nos familiarizaremos con este término) y con el que hacemos los distintos cambios al fichero o escribimos nuestro código. Este modo es accesible desde el modo normal pulsando la tecla ‘i’ (insert) o la tecla ‘a’ (append) las cuales veremos la diferencia en el apartado de comandos en el modo normal.

El modo visual, a pesar de ser el menos utilizado de los tres, es uno de los más usados por los usuarios que empiezan a usar Vim y es que nos ayuda a seleccionar texto de manera visual usando el teclado. Esto es, cuando pulsamos la tecla ‘v’ y entramos en el modo visual, la posición actual del cursor se tomará como punto de inicio de la selección y podremos movernos normalmente para seleccionar múltiples líneas con el fin de hacer algo con ellas más tarde. Lo que en un editor normal se hace arrastrando con el ratón nosotros lo hacemos con el teclado, no porque no nos guste el ratón, sino porque nos hace más eficientes.

De estos últimos dos modos podemos salir pulsando la tecla escape de nuestro teclado, volviendo así al modo normal. A continuación mostramos una captura de pantalla en la que vemos a Vim en los tres modos previamente mencionados y en la parte inferior veremos el modo en el que nos encontramos (a excepción del modo normal, en el que no se muestra nada).

Vim en modo normal

Vim en modo normal

Vim en modo insert

Vim en modo insert

Vim en modo visual

Vim en modo visual

Adicionalmente tenemos otros dos modos derivados del modo visual que son el visual line, en el cual se seleccionan líneas completas y que es accesible mediante la combinación shift+v, y el visual block, en el cual se seleccionan bloques del columnas y pueden editarse simultáneamente varias líneas en las mismas posiciones y que es accesible con la combinación control+v. Estos modos no son ámpliamente usados como los son los tres modos principales, sin embargo a veces es muy útil el poder seleccionar líneas completas a la hora de tener la necesidad de copiar bloques de líneas o eliminarlas.

Una de las cosas que complican bastante el uso de Vim es su edición modal y la necesidad de acostumbrarse a usar todos estos modos para poder crear nuestros programas.

Hasta aquí el primer post acerca del editor Vim y de sus características. En el siguiente post nos dedicaremos a repasar los principales comandos de Vim en modo normal y en próximos posts explicaremos el fichero de configuración de Vim (.vimrc) en el cual se pueden activar la mayoría de sus características especiales.

Anuncios

4 comentarios en “Vim, el $EDITOR

  1. Existe un amplio debate sobre el tema de editores de texto, si señor.
    A mi, personalmente me gusta editar ficheros pequeños (sobretodo scripts) de forma rápida con este tipo de editores.
    No obstante, el desarrollo de grandes proyectos de software es mucho más cómodo con un IDE y su magica función de autocompletar jeje.

    P.D: Yo soy un joe user… a ver si me convences en la próxima entrada =P

    • Bueno una de las principales funciones de Vim es la de editar ficheros pequeños, pero en ficheros grandes y proyectos también contribuye mucho. Ya veremos en el siguiente post que también es posible autocompletar, lo cual es casi imprescindible como sabemos…
      También hablaré un poco de la guerra de editores en el siguiente post, me diste la idea, y os intentaré convencer para que al menos lo uséis para probarlo o para pequeñas ediciones.
      Gracias por el comentario 🙂

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s