Mejora tu experiencia usando el editor Vim

Con estas sencillas configuraciones puedes hacer que el editor Vim (Vi Mejorado) sea más productivo y darle una segunda oportunidad.

Carátula del grupo “God Destruction”

En el blog ya has podido leer sobre cómo salir del editor Vim. Pero supongamos que además de eso queremos darle una segunda oportunidad y utilizarlo como tu editor de texto principal, con estas sencillas configuraciones puedes mejorar esa experiencia de uso.

Más allá de lo anecdótico de esa rivalidad entre usuarios de editores de texto Emacs y de Vi (o Vim), o de que Stallman lo llame el editor del diablo, primero he de puntualizar que no uso ninguno de forma intensiva. A mí me sirven cosas más simples y pequeñas como micro o nano.

Pero sí he de decir que en varias ocasiones me he encontrado a desarrolladores que me han dicho que usaban Vim. Así que como dice el refrán: “algo tiene el agua cuando la bendicen”.

Es decir, que si mucha gente lo usa será porque le resulta una herramienta interesante, quizás es hora de descubrir este editor más en profundidad. Si te animas a probarlo, quizás estas pequeñas configuraciones hagan que sea más sencillo ese cambio hacia Vim.

Este artículo es una traducción/adaptación de un artículo en inglés escrito por Girish Managoli publicado en la web opensource.com bajo licencia CC-by-sa, que me pareció interesante compartir por aquí. Empezamos…

Imagen: Markus Freak

Las configuraciones que vamos a ver a continuación deberás incluirlas en el archivo oculto de configuraciones de vim que hay en tu /home llamado .vimrc.

Si no existe deberás crearlo y editarlo e ir añadiendo de todas las opciones que veamos las que creas que son más interesantes.

Las configuraciones que veremos cubrirán aspectos como:

  1. Los tabuladores y el sangrado de texto
  2. El formato y cómo mostraremos el texto
  3. La búsqueda de texto
  4. Cómo navegar por el texto
  5. Algunas otras variadas

1.- Tabuladores y sangrado de texto

Para alinear automáticamente  la sangría del texto de una línea en un archivo

set autoindent

El sangrado inteligente utiliza la sintáxis y el estilo del código para alinear el texto

set smartindent

Para establecer el número de espacios para mostrar por cada pulsación del tabulador:

set tabstop=4

Para establecer el número de espacios para mostrar en una “shift operation” (como ‘>>’ o ‘<<’):

set shiftwidth=4

Si deseas utilizar espacios en vez de tabulaciones, esta opción inserta espacios cuando se pulsa la tecla tabulador.

set expandtab

2.- El formato y cómo mostraremos el texto

Para mostrar los números de las líneas:

set number

Para “cortar” el texto cuando este exceda el ancho máximo de la línea:

set textwidth=80

Para “cortar” el texto pero basándose en el número de columnas desde el lado derecho:

set wrapmargin=2

Para identificar y que resalte la apertura y cierre de paréntesis o corchetes cuando el cursor pase por encima de uno de estos:

set showmatch

3.- Búsqueda

Para resaltar el término buscado en un archivo:

set hlsearch

Para realizar búsquedas incrementales mientras estás escribiendo:

set incsearch

Para realizar búsquedas ignorando si están en mayúsculas o minúsculas:

set ignorecase

Para buscar sin tener en cuenta la configuración anterior ignorecase cuando ambos ignorecasey smartcase están activados y el patrón de búsqueda contiene mayúsculas:

set smartcase

Por ejemplo, imaginemos que el texto contiene este testo

test
Test

Activando ambos, tanto ignorecasecomo smartcase. Una búsqueda del término “test” encuentra y resalta ambas:

test
Test

Una búsqueda de “Test” encuentra y resalta sólo la segunda linea:

test
Test

4.- Cómo navegar por el texto

Para mejorar la experiencia visual , quizás puedes preferir que el cursor este en alguna parte del texto, quizás por el medio, en vez de en la primera línea. La siguiente opción ubica el cursor en la línea 5. Modifícalo a tu gusto.

set scrolloff=5

Para mostrar de forma permanente la barra de estado en la parte inferior de la pantalla de vim, donde se mostrará el nombre del archivo, los números de fila y columna, etc:

set laststatus=2

5.- Opciones variadas

Para inhabilitar la creación automática de un archivo de respaldo. Cuando esta opción está activada, vim crea un “backup” del archivo antes de la edición. Los archivos de backup llevan este símbolo (~)al final del nombre del archivo.

set nobackup

Para inhabilitar la creación de un archivo “swap“: Cuando esta opción está activada, vim crea un archivo “swap” que existe hasta que empiezas a editar el archivo.

El archivo “swap” es utilizado para recuperar el archivo si el equipo o el programa se quedan “colgados” o fallan Los archivos “swap” son ocultos y empiezan con un . y terminan con .swp.

set noswapfile

Supongamos que necesitas editar múltiples archivos en la misma sesión de vim y poder cambiar entre ellos. Una característica molesta es que no es evidente que el directorio de trabajo es el que se abrió en el primer archivo.

A menudo es útil cambiar automáticamente el directorio de trabajo al del archivo que se está editando. Para habilitar esta opción:

set autochdir

vim mantiene un historial de acciones para deshacer. De manera predeterminada este historial es activo sólo hasta que el archivo es cerrado.

vim incluye la opción de mantener ese historial incluso cuando el archvo es cerrado, lo que significa que puedes deshacer acciones incluso después de haber cerrado, guardado y vuelto a abrir el archivo.

El archivo es oculto y tiene la extensión .un~

set undofile

Para establecer sonidos de alerta (por ejemplo sonará una alerta si tratas de hacer “scroll” más allá de la última línea:

set errorbells

Si lo prefieres puedes establecer alertas visuales:

set visualbell

Estas dos últimas opciones particularmente no me gustan.

Es posible activar un comando sólo para un archivo en concreto y no para toda la configuración global. Para hacer esto, abre el archivo y escribe : seguido de set y el comando que deseas. Esa configuración será efectiva sólo para esa sesión de edición del archivo.

También puedes tener información más detallada de un comando si escribes dentro de vim

:help autoindent

Esto nos dará información y ayuda sobre autoindent, puedes hacer lo mismo con cualquier otro comando.


Y hasta aquí esta pequeña guía de comandos, para hacer que vim sea un poco más amigable. Quizás así hasta yo me termine acostumbrando a utilizarlo…

¿Te pareció interesante? ¿Los conocías, aprendiste algo nuevo? ¿Tienes otras opciones? Los comentarios están abiertos a tus aportes para complementar esta pequeña guía. ¡Anímate a comentar!

Es la hora de usar vim

————————————————————-

4 pensamientos en “Mejora tu experiencia usando el editor Vim

  1. Qué artículo más útil te has currado colega!!

    Desde hace un par de años uso a “full” vi, y he dejado atrás otros a los que estaba acostumbrado como nano. Es bastanto durillo al principio, pero luego ya no sabes utilizar otro xD

    Probaré tus indicaciones, a ver que tal van 🙂

  2. Buen artículo 🙂
    no conocía la opción “undofile”.

    Para desarrollo de software suelo utilizar IDE’s o al menos editores gráficos con funcionalidad extendida.
    Pero cuando toca editar ficheros en un servidor “headless”, vim es como el mesías; junto con tmux y mosh.

    Aquí está la configuración que viene por defecto con openSUSE: https://github.com/binary-sequence/salt-states/blob/development/srv/salt/console-admin/vim/vimrc

    Y esta es mi configuración particular: https://github.com/binary-sequence/salt-states/blob/development/srv/salt/console-admin/vim/binary-sequence.vimrc

    Añadiendo opción “undofile” 🙂

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

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 )

Google+ photo

Estás comentando usando tu cuenta de Google+. 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 )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.