¿Cómo editar textos en Linux con VIM?
La edición de archivos de texto es fundamental tanto para administrar Linux como para el campo de desarrollado de aplicaciones en distintos lenguajes. Algunos de ellos son:
emacs: Es un programa muy adaptable que puede realizar muchas más tareas además de editar texto.
nano: Surgió como un reemplazo libre del editor de texto Pico.
Vim: Es la versión actualizada y mejorada del anterior “vi”. Muy usada por administradores y/o desarrolladores.
En este apartado nos centraremos en aprender VIM. En caso de no tenerlo instalado colocamos en nuestra Shell:
# apt-get install vim
En caso de tener un Sistema operativo de Red Hat, colocar:
# yum install vim
Table of Contents
ToggleEmpezando con VIM
En este caso, lo primero que vamos a realizar, es invocar al comando vim seguido del nombre de un archivo; si este no existe, lo abre y lo crea como un documento en blanco; si este si existie, lo abre y muestra su contenido.
# vim test
Luego, veremos una pantalla similar a la siguiente:
Para salir, presionamos la tecla ESC y luego escribimos :q! (veremos que se escribe en el margen inferior izquierdo)
De esta manera, salimos sin guardar los cambios.
Ahora, si quisiéramos abrir un archivo existente:
# vim /etc/passwd
Se verá el contenido:
Para salir sin guardar los cambios utilizar Esc:q!
Modos de uso de VIM
Vim es un editor con diferentes modos. En el modo de edición, el texto que ingresemos será agregado al texto; en modo de comandos las teclas que oprimamos pueden representar algún comando del mismo. Cuando comencemos a editar un texto, estará en modo para dar comandos. Por ejemplo, el comando para salir es: seguido de q y ENTER (:q); con ese comando saldrá si no se han hecho cambios al archivo o los cambios ya están salvados; para salir ignorando cambios, presionamos :q! seguido de ENTER.
Es muy importante diferenciar los dos distintos modos de operación, dado que esto marca la diferencia con respecto a otros editores que estemos acostumbrados a utilizar.
Modo comando
Siempre que se inicia vim, comienza en modo de comandos, que, como su nombre lo indica, permite indicar comandos que ejecuten una acción específica, como buscar, copiar, pegar, eliminar líneas, mover el cursor, posicionarse en partes del documento, etc. Varios comandos están disponibles directamente, con solo apretar una o dos teclas, y otros están disponibles en el modo “last line” o última línea, que se accede presionando la tecla dos puntos : y, seguido a esto, se indica la acción o comando a ejecutar. Para salir del modo de última línea, presionamos ESC.
Inserción
Este modo se utiliza para trabajar en el documento, donde se puede escribirlo y editarlo. Para ingresar al modo de inserción se usa generalmente la letra “i” uno de los varios comandos que se describen más adelante. Estando en el modo de inserción, presionamos ESC para regresar al modo de comandos.
Modo visual
Pulsando la tecla v y utilizando las flechas del teclado, para moverse por el documento e ir seleccionando texto para luego ser copiado, borrado, tabulado, etc.
Editar archivos con VIM
- Para pasar del modo inserción al modo de comandos, se emplea la tecla ESC; para desplazarse en este modo sobre el archivo, se emplean las teclas j (abajo), k (arriba), h (izquierda) y l (derecha). También se pueden usar las flechas, si nuestra terminal lo permite. Avanzar página Ctrl+U (PgUp), retroceder página Ctrl+D (PgDn).
- Si queremos ir a una línea específica, podemos escribir el número de la línea, seguido de gg o G; por ejemplo 25G, o utilizar “:” seguido del número de línea (:25) y ENTER. Para mostrar el número de las líneas, se puede ejecutar :set number, y para quitar los números :set nonumber.
- En el caso de querer ir al final de la línea en la que está el cursor, presionamos $; para ir al comienzo 0. Para llegar al inicio del archivo, 1G o gg, y, para llegar al final del archivo, G.
- Para buscar un texto: /directorio-texto, seguido del texto que deseamos buscar y ENTER. Luego podemos presionar n o N para el siguiente o anterior resultado de la búsqueda. Para guardar los cambios :w; para guardar y salir, :wq! o ZZ.
- Para ejecutar un comando del intérprete utilizamos :! seguido del comando y ENTER (ej :!ls). Podemos teclear :set all para ver las opciones disponibles. Suele usarse mucho :wq!
- Una de las utilidades más comunes es el uso de :wq, que corresponde a la unión de las opciones guardar (w) y salir (q); o bien el modo forzado es :q!, que sale de Vim sin guardar cambios.
Uso de Comandos
Comandos de desplazamiento
h Una posición a la izquierda ( ← ).
l Una posición a la derecha ( → ).
k Una línea hacia arriba ( ↑ ).
j Una línea hacia abajo ( ↓).
0 (cero) Inicio de la línea.
$ Fin de la línea.
w Adelante una palabra.
W Adelante una palabra incluyendo puntuación.
b Atrás una palabra.
B Atrás una palabra incluyendo puntuación.
e Al final de la palabra actual.
E Al final de la palabra actual incluyendo puntuación.
n- Arriba n líneas, primer carácter no espacio.
n+ Abajo n líneas, primer carácter no espacio.
H Primera línea de la pantalla actual.
M Línea a mitad de la pantalla actual.
L Última línea de la pantalla actual.
Comandos para Copiar, cortar y pegar
yy Copia la línea actual.
Y Copia la línea actual.
nyy Copia n líneas.
yw Copia la palabra actual.
dd Corta la línea actual (también se usa para borrar).
p Pega después del cursor.
P Pega antes del cursor.
Comandos de Inserción y Reemplazo
a Inserta texto después del cursor.
A Inserta texto al final de la línea actual.
i Inserta texto antes del cursor.
I Inserta texto antes del primer carácter no espacio de la línea actual.
o Abre una nueva línea después de la actual.
O Abre una nueva línea antes de la actual.
r Reemplaza el carácter actual.
R Reemplaza el carácter actual y los siguientes hasta presionar ESC.
Comandos de Desplazamiento
x Borra el carácter en el que está el cursor.
X Borra el carácter antes del cursor.
nx Borra n caracteres.
dd Borra la línea actual.
ndd Borra n líneas.
dw Borra la palabra actual.
ndw Borra n palabras.
D Borra desde el cursor hasta el final de la línea.
dL Borra desde el cursor hasta el final de la pantalla.
Comandos Descripción
dG Borra desde el cursor hasta el final del documento.
cw Reemplaza la palabra actual con nuevo texto.
J Junta la línea actual con la siguiente.
~ (tilde) Cambia may/min del carácter actual.
u Deshacer el último cambio de texto.
U Deshacer los cambios en la línea actual.
. (punto) Repite el último cambio de texto realizado.
> Tabula la línea actual hacia la derecha.
< Tabula la línea actual hacia la izquierda.
Uso avanzado de VIM
Dividir ventanas
Con Vim podemos dividir ventanas, es decir, no hay límite de ventanas. Se puede copiar con el comando yy, y se puede pegar con el comando p, de una ventana a la otra.
:split Divide el documento en dos ventanas horizontales con el mismo archivo y las mismas líneas en cada ventana.
:vsplit Divide el documento en dos ventanas verticales con el mismo archivo y las mismas líneas en cada ventana.
:split test-2 Divide el documento en dos ventanas horizontales con el archivo inicialmente cargado en una ventana y el ‘test-2’ en la otra.
:8split test-2 Divide el documento en dos ventanas horizontales con el archivo inicialmente cargado en una ventana y el ‘test-2’ en la otra con una altura de 8 líneas.
:e nombredearchivo Se carga un archivo en la ventana actual.
Ctrl + W (dos veces) Cambia el foco entre ventanas.
:close Cierra la ventana actual.
:only Cierra todas las ventanas, dejando solo la actual.
Comparar archivos
Se pueden comparar dos archivos usando vim de la siguiente forma:
#vim -d file1.txt file2.txt
Como resultado se mostrarán en colores las Diferencias entre ambos archivos.
Opciones de lineas de comandos
vim -r muestra archivos rescatados después de un cierre incorrecto.
-r archivo Recupera ‘archivo’
vim archivo1 archivo2 Abre archivos ‘archivo1‘ y ‘archivo2’
+45 archivo Abre el ‘archivo’ y posiciona el cursor en el renglón 45
+/cadena archivo Abre el ‘archivo’ y posiciona el cursor en el primer renglón donde encuentre ‘cadena’
Modo visual en bloque
Este modo se activa con el atajo de teclado Ctrl + v en modo comandos. Nos permite realizar selecciones de columnas muy útiles, por ejemplo, supongamos que tenemos un archivo con el contenido siguiente:
Negro
Blanco
Hola
Chau
Usando:
gg (Va hacia el comienzo del archivo)
Ctrl + v (Entra en modo visual en bloque)
2j (Selecciona 2 líneas hacia abajo)
i (Entra en modo inserción, notar que debe
ser “i” mayúscula)
Tipeamos:
#Esc (De esta manera, automáticamente las primeras 3 líneas tendrán el caracter “#” al comienzo y regresa al modo comandos):
#Negro
#Blanco
#Hola
Chau
A tener en cuenta:
Linux cuenta con un comando tutor llamado vimtutor. Esto nos ayudará a tener un mejor uso avanzado de vim, ya que nos guiará paso a paso para su correcto uso.