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

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…

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:
- Los tabuladores y el sangrado de texto
- El formato y cómo mostraremos el texto
- La búsqueda de texto
- Cómo navegar por el texto
- 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 ignorecase
y 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 ignorecase
como 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!

————————————————————-
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 🙂
Buf cuando lo he probado no he podido con el…
Pero para lo que hago no lo necesito.
Saludos colega!
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» 🙂
Hola!
Gracias por el aporte! 🙂
La verdad es que Vim o Emacs son demasiado para lo poco que los utilizo! 😉
Saludos y echaré un vistazo a mosh
Alguna forma de integrar Par para que maneje al vuelo, al momento de editar un archivo para no usar :set tw=79, algo como :set par~tw=79… asi Par hace el corte de linea en la columna 79 pero teniendo en cuenta los 2 núm. del ruler porque con los acentos y ñ y los digraph se suman caracteres y tw=79 corta a 79 aunque el ruler marque por ej. 92 79 por los acentos incluidos en la linea, y eso en gopher se nota. muchas gracias.
Hola.
Gracias por la visita y por comentar… Eso sí, no he entendido nada 😁😁
Siii ya lo sé, hasta es dificil de explicar… gopher, navegador Gopher, ruler, doble contabilidad, Par,
y de todas formas me he dado cuenta que la mejor forma de hacer el corte de linea es manual, cortando la palabra a mano con la ayuda de :set cc=79 como aviso.
Saludos.