Comandos en Vim

VIM, Emacs y Nano son los tres editores más utilizados en el terminal de Linux. Personalmente hace muchos años que me decanté por Vim, y como hace poco refrescaba mis conocimientos sobre este editor, me pareció buena idea publicar una entrada al respecto.

VIM

Esta entrada está pensada para ser una guía de consulta dónde encontrar un resumen de los que a mi modo de ver son los principales comandos. Vim tiene muchísimas opciones, así que evitaremos entrar en las más complejas y en las menos prácticas, así como en el modo visual. De cualquier modo esta información es más que suficiente para hacer un uso habitual y fluido de Vim.

Para profundizar más te recomiendo consultar el manual, dónde encontrarás la información al completo, las posibilidades de Vim son muchísimas.

Convenciones de este documento

En este documento utilizaremos las siguientes convenciones:

  • [x] Modificador entre paréntesis. Es un modificador de comando opcional.
  • {x} Modificador entre corchetes. Es un modificador de comando obligatorio.
  • rango. Especificaremos un rango definiendo el valor inicial y el final separados por una coma. Por ejemplo: 2,5.

Comando de ayuda

La mejor forma de complementar y ampliar esta guía es usar el comando de ayuda:

ComandoAcción
:help
Abrirá el manual de referencia y nos situará al comienzo.
:help [comando] Abrirá el manual y nos situará en la página del comando especificado.

El manual se visualizará en el propio VIM se comporta como cualquier otro documento que abramos en este editor, y por lo tanto serán efectivos todos los comandos que indicamos en este documento con la excepción de que no permite guardar. Así que para salir y regresar al documento dónde nos encontrábamos antes de consultar el manual escribiremos el comando :q!.

Comandos de desplazamiento

ComandoAcción
[n]l ó [n]flecha derechaMueve el cursor una posición a la derecha.
Si está precedido de [n] se desplazará tantos caracteres como [n] indique.
[n]j ó [n]flecha abajoMueve el cursor a la línea siguiente.
Si está precedido de [n] se desplazará tantas líneas como [n] indique.
[n]h ó [n]flecha izquierdaMueve el cursor una posición a la izquierda.
Si está precedido de [n] se desplazará tantos caracteres como [n] indique.
[n]k ó [n]flecha arribaMueve el cursor a la línea anterior.
Si está precedido de [n] se desplazará tantas líneas como [n] indique.
0 ó InicioColoca el cursor en el primer carácter de la línea.
$ ó FinMueve el cursor al último carácter de la línea.
Av Pag
Mueve el cursor una página hacia adelante
Re Pag
Mueve el cursor una página hacia atrás
^
Mueve el cursor a la primera posición no blanca de la línea.
[n]+
Mueve el cursor a la siguiente línea y lo coloca en el primer carácter no blanco.
Si está precedido de [n] avanzará tantas líneas como este indique
[n]-Mueve el cursor a la línea anterior y lo coloca en el primer caracter no blanco.
Si está precedido de un número [n] retrocederá tantas líneas como este indique.
[n]b ó [n]BColoca el cursor al comienzo de la palabra inmediatamente anterior a la que estamos situados.
Si está precedido de un número [n], retrocederá tantas palabras como este indique.
[n]w ó [n]WColoca el cursor al comienzo de la palabra inmediatamente posterior a la que estamos situados.
Si esta precedido de un numero [n] avanzara tantas palabras como este indique.
[n]e ó [n]E Coloca el cursor al final de la palabra sobre la que estamos situados.
Si esta precedido de un numero [n] avanzara tantas palabras como este indique.
[n]ge ó [n]gE Coloca el cursor al final de la palabra inmediatamente anterior a la que estamos situados.
Si esta precedido de un numero [n] lo hace de tantas palabras como este indique.
[n]f{c}Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos.
Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.
[n]F{c}Desplaza el cursor hasta la primera aparición de {c} en la línea en la que nos encontramos.
Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter en la línea en la que estamos situados.
[n]t{c}Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos y coloca el cursor en la posición inmediatamente anterior.
Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.
[n]T{c}Desplaza el cursor hasta la aparición anterior de {c} en la línea en la que nos encontramos y coloca el cursor en la posición inmediatamente posterior.
Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.
, Repite la acción del último comando f ó t.
; Repite la acción del último comando F ó T.

Comandos de inserción de texto

ComandoAcción
aCambia al modo de edición. Sitúa el cursor en el carácter siguiente al que nos encontramos.
ACambia al modo de edición. Sitúa el cursor al final de la línea dónde nos encontramos.
iCambia al modo de edición. Sitúa el cursor en la misma posición en que nos encontramos.
ICambia al modo de edición. Sitúa el cursor en el primer carácter no blanco que encuentre.
gICambia al modo de edición. Sitúa el cursor en la primera columna.
oCambia al modo de edición. Inserta una nueva línea bajo la posición del cursor y nos sitúa en la primera columna de ésta.
OCambia al modo de edición. Inserta una nueva línea sobre la posición del cursor y nos sitúa en la primera columna de ésta.
RCambia a modo de edición. Al escribir sobrescribiremos el texto bajo el cursor en lugar de desplazarlo hacia la derecha.

Comandos de eliminación de texto

ComandoAcción
[n]x
Elimina el carácter en la posición dónde estamos situados.
Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.
[n]XElimina el carácter delante de la posición dónde estamos situados.
Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.
[n]ddElimina la línea dónde estamos situados.
Si está precedido de un número [n] eliminará tantas lineas cómo [n] indique.
D
Elimina los caracteres desde la posición del cursor hasta el final de la línea.
:[rango]d
Elimina el rango de filas definido. A tener en cuenta que el conteo de las líneas comienza en 0.
:2,5d eliminará las filas de la 2 a la 5

Comandos para reemplazar texto

ComandoAcción
r{c}Sustituye el carácter bajo el cursor por un carácter {c}.
~
Invierte la capitalización del carácter bajo el cursor.

Comandos para deshacer y rehacer cambios

ComandoAcción
[n]uDeshace el último cambio realizado.
Si está precedido de un número [n] deshará tantos cambios como [n] indique.
UDeshace todos los cambios realizados en la línea en la que nos encontramos mientras no nos hayamos movido de ella.
:redRehace el último cambio.
CTRL+ r
Rehace el último cambio.

Comandos para buscar textos

ComandoAcción
/{t}/Busca la siguiente aparición del texto {t}.
?{t}?Busca la aparición previa de {t}.
nRepite la última búsqueda.
NRepite la última búsqueda en dirección opuesta.

Comandos para guardar y salir

ComandoAcción
:w
Guarda los cambios realizados.
:q
Sale de VIM. Si se han realizado cambios devolverá un error.
:wq ó 😡 ó ZZ
Guardar y salir
:q! ó ZQ
Descartar los cambios y salir.
:wq!Guarda los cambios y sale.

Conclusión

Para los que vienen de un entorno gráfico el primer contacto con Vim puede ser algo inesperado y quizás chocante. De cualquier forma la curva de aprendizaje de Vim es bastante sencilla y cuando aprendemos su dinámica y unos pocos comandos ya nos manejamos con una soltura difícil de imaginar al principio. Hoy hemos visto una lista de los comandos que he considerado más prácticos, ¿cuáles usas tú?, ¿crees que falta alguno?, ¿echas en falta algo?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *