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.
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.
Índice de Contenidos
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:
Comando | Acció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
Comando | Acción | |
---|---|---|
[n]l ó [n]flecha derecha | Mueve el cursor una posición a la derecha. Si está precedido de [n] se desplazará tantos caracteres como [n] indique. | |
[n]j ó [n]flecha abajo | Mueve el cursor a la línea siguiente. Si está precedido de [n] se desplazará tantas líneas como [n] indique. | |
[n]h ó [n]flecha izquierda | Mueve el cursor una posición a la izquierda. Si está precedido de [n] se desplazará tantos caracteres como [n] indique. | |
[n]k ó [n]flecha arriba | Mueve el cursor a la línea anterior. Si está precedido de [n] se desplazará tantas líneas como [n] indique. | |
0 ó Inicio | Coloca el cursor en el primer carácter de la línea. | |
$ ó Fin | Mueve 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]B | Coloca 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]W | Coloca 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
Comando | Acción |
---|---|
a | Cambia al modo de edición. Sitúa el cursor en el carácter siguiente al que nos encontramos. |
A | Cambia al modo de edición. Sitúa el cursor al final de la línea dónde nos encontramos. |
i | Cambia al modo de edición. Sitúa el cursor en la misma posición en que nos encontramos. |
I | Cambia al modo de edición. Sitúa el cursor en el primer carácter no blanco que encuentre. |
gI | Cambia al modo de edición. Sitúa el cursor en la primera columna. |
o | Cambia 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. |
O | Cambia 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. |
R | Cambia 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
Comando | Acció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]X | Elimina 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]dd | Elimina 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
Comando | Acció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
Comando | Acción |
---|---|
[n]u | Deshace el último cambio realizado. Si está precedido de un número [n] deshará tantos cambios como [n] indique. |
U | Deshace todos los cambios realizados en la línea en la que nos encontramos mientras no nos hayamos movido de ella. |
:red | Rehace el último cambio. |
CTRL+ r | Rehace el último cambio. |
Comandos para buscar textos
Comando | Acción |
---|---|
/{t}/ | Busca la siguiente aparición del texto {t}. |
?{t}? | Busca la aparición previa de {t}. |
n | Repite la última búsqueda. |
N | Repite la última búsqueda en dirección opuesta. |
Comandos para guardar y salir
Comando | Acció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?