Comenzando con Vim para Linux

Imagina que estás hasta las rodillas en tu sistema Linux, intentando desesperadamente editar un archivo, y cada intento se siente como descifrar un código antiguo. Si cuanto más haces clic, más perdido te sientes, ¿por qué no recurrir a Vim para Linux?

En este tutorial, descubrirás los secretos de Vim, un editor de texto ampliamente aclamado, que te transformará de un vagabundo de Linux en un virtuoso de la línea de comandos.

¡Coge tu espada metafórica (también conocida como tu teclado) y adéntrate en el mundo de Vim!

Prerrequisitos

A continuación, hay algunos prerrequisitos para preparar el escenario para dominar Vim en tu sistema Linux:

  • A Linux OS – This tutorial uses an Ubuntu 22.04 LTS.

Crear y Editar Archivos con Vim para Linux

Vim opera en diferentes modos, cada uno ofreciendo capacidades de edición únicas. Pero antes de pasar a esos modos, primero necesitas aprender cómo crear y editar archivos con Vim en Linux.

Para crear y editar un archivo con Vim, sigue estos pasos:

1. Abre una terminal y ejecuta el siguiente comando vim para crear un archivo llamado sshd_config (arbitrario) con Vim. Este comando crea automáticamente el archivo si no existe. De lo contrario, el archivo existente se abre en Vim.

La interfaz de Vim se verá como la que se muestra a continuación si has creado un archivo nuevo, lo que indica que Vim está actualmente en modo de comando. El modo de comando es uno de los modos principales en los que interactúas con el texto en el editor Vim.

Creating a new file via Vim for Linux

2. A continuación, copia el texto a continuación en tu portapapeles, que contiene configuraciones de servidor SSH de muestra solo con fines de demostración y no refleja configuraciones reales del servidor.

3. En Vim, presiona i, el comando para entrar en el modo de inserción. El modo de inserción también es uno de los modos principales en Vim, que te permite escribir y modificar el contenido de tu documento.

Una vez que ingreses al modo de inserción, verás que la línea de estado muestra — INSERTAR — como se muestra a continuación.

Entering the insert mode on Vim

4. Ahora, presiona Ctrl+Shift+V o Shift+Insertar para pegar el texto que copiaste en el paso dos en el editor Vim, y presiona Esc para salir del modo de inserción (cambia al modo de comando).

Observa que el estado — INSERTAR — desaparece, lo que indica que has vuelto al modo de comando.

Inserting the copied text into Vim

5. Por último, escribe el comando :w y presiona Enter para guardar los cambios en el archivo sin cerrar el editor.

Cuando sea necesario, puedes ejecutar los otros comandos a continuación:

Command Details
:q! Quit the editor without saving the changes.
:w! Write the current file changes forcefully.
:wq Save the changes and quit the editor (or :wq! to save and quit forcefully).
e! Revert to the last saved version of the file.
Saving the changes

El estado de la línea muestra el tamaño de datos escritos en el archivo, que en este caso son 23 líneas (23L) y 624 bytes (624B).

Verifying the changes are saved

Navegando por textos en Vim

Después de dominar el arte de crear y editar archivos con Vim, te sumergirás en una habilidad crucial que elevará tu destreza en la edición de texto: la navegación en Vim. La navegación efectiva es la clave para desbloquear el potencial de Vim, como explorar un vasto paisaje.

Para aprender cómo navegar por textos en Vim, sigue estos pasos:

1. Ahora, escribe el comando :set nu y presiona Enter para activar la numeración de líneas en Vim. La numeración de líneas es una característica crucial del editor al tratar con código o documentos extensos.

Si tienes éxito, verás los números de línea en el editor, como se muestra a continuación.

Setting the line numbering

2. Luego, cambia al modo de comando (Esc) y presiona el comando gg para ir al principio del archivo.

Jumping to the beginning of the file

3. A continuación, presiona cualquiera de los siguientes comandos hasta llegar al principio del parámetro MaxSessions, y presiona $ para mover el cursor al final de la línea.

Command Details
h Move the cursor to the left or the previous character.
j Move the cursor one line down.
k Move the cursor one line up.
l Move the cursor to the right or the next character.
Placing the cursor at the end of the MaxSessions line

4. Ahora, reemplaza un texto con lo siguiente:

  • Pulsa i para cambiar al modo de inserción.
  • Elimina el valor (Retroceso o Suprimir), que es 10, y reemplázalo con 25.
  • Cambia al modo de comando (Esc) y guarda los cambios (:w).
Editing a text in Vim

Insertar textos en puntos específicos

Vim ofrece una variedad de comandos que permiten un control preciso sobre dónde y cómo insertar nuevos textos (exactamente donde los necesitas). Esta función funciona ya sea que desees insertar al principio de una línea, justo después de la posición actual del cursor o al final de una línea.

Para ver cómo funcionan las inserciones de texto en puntos específicos, realiza lo siguiente:

1. Presiona I (Shift+I) mientras el cursor está al final de la línea para entrar en el modo de inserción y simultáneamente coloca el cursor al principio de la línea.

Inserting at the beginning of the line

2. Cambia al modo de comando (Esc), mueve el cursor a cualquier otro carácter en la línea actual de texto (es decir, al principio) y presiona el comando a.

Este comando cambia Vim al modo de inserción y coloca el cursor en el siguiente carácter desde su posición anterior. Este comportamiento es útil para agregar rápidamente texto en el medio de una línea sin perturbar el texto existente.

Inserting at the current cursor point

3. Inserta ‘y’ para escribir la clave MaxSession como MyaxSession, como se muestra a continuación, y vuelve al modo de comando (Esc).

Notarás que el nuevo carácter ‘y’ aparece inmediatamente después del primero.

Inserting a character within a line of text

4. Ahora, modifica la línea de texto de la siguiente manera:

  • Pulsa Shift+A para ejecutar el comando A, que permite a Vim entrar en el modo de inserción y mover el cursor al final de la línea. Este comportamiento es ideal para agregar rápidamente contenido como un punto y coma o para finalizar una oración.
  • Agrega 0 al final de la línea, lo que cambia el valor a 250.
  • Regresa al modo de comando (`Esc`) y guarda los cambios (`:w`).
Appending text to the end of the line

Apertura de Nuevas Líneas

Ahora que has dominado la colocación estratégica de texto dentro de tus archivos Vim, es hora de explorar una habilidad que mantendrá tu contenido bien estructurado y organizado. La capacidad de abrir nuevas líneas en Vim es tu boleto hacia un texto más legible y estéticamente agradable.

Para abrir nuevas líneas, arriba o abajo, completa los siguientes pasos:

1. Mientras estés en el modo de comando, presiona `o` para abrir una nueva línea debajo de la línea actual de texto y añade el siguiente comentario sobre las sesiones máximas.

# Nota: Ajusta maxSessions según la carga del servidor
Adding a new line below the current line of text

2. Cambia al modo de comando (`Esc`), coloca el cursor en otra línea de texto y presiona `O` (Mayús+O) para añadir una nueva línea encima de la línea actual de texto.

Adding a new line above the current line of text

3. Ahora, añade el siguiente comando al archivo y guarda los cambios (`:w`).

# Ten cuidado con los niveles de registro para evitar problemas de rendimiento
Populating the new line of text

Eliminación de Palabras y Líneas de Texto

Vim proporciona comandos eficientes para eliminar y reemplazar texto más allá de las teclas básicas de Borrar o Retroceso. Estos comandos son accesibles desde el modo de comando, lo que te permite hacer modificaciones y correcciones rápidamente, permitiéndote eliminar o reemplazar caracteres, palabras o líneas enteras.

Para eliminar y reemplazar textos en Vim para Linux, ejecuta lo siguiente:

1. Mueve tu cursor al parámetro MyaxSessions, específicamente al carácter ‘y‘.

Placing the cursor at a specific character

2. Luego, presiona x para eliminar instantáneamente el carácter bajo el cursor, que, en este caso, es ‘y‘.

El parámetro vuelve a su texto original como MaxSessions, como se muestra a continuación.

Deleting a character under the cursor

3. Mueve tu cursor a la línea PermitRootLogin no:.

Positioning the cursor

4. Ahora, presiona "_dd para eliminar toda la línea de texto, independientemente de la posición del cursor.

La parte "_ en el comando especifica el registro de agujero negro, que descarta el texto eliminado (no se almacenará en ningún registro).

Vim tiene su propio conjunto de registros donde puedes almacenar textos, y no especificar el registro de agujero negro hace que el comando corte el texto en lugar de eliminarlo.

Si tienes éxito, notarás que la línea PermitRootLogin no: ha desaparecido.

Deleting an entire line of text

5. Mientras estás en modo comando, coloca tu cursor al principio de la palabra Specifies en la línea # Specifies whether root can log in using ssh.

Placing the cursor at the beginning of a word

6. Por último, ejecuta el comando "_dw, que elimina la palabra Specifies, como se muestra a continuación:

Deleting a word

Opcionalmente, puedes optar por los siguientes comandos para operaciones adicionales de eliminación:

Command Details
"_d$ Delete texts from the cursor position to the end of the line.
"_D Deletes from the cursor position to the end of the line.
"_d^ Deletes from the cursor position to the first non-whitespace character of the line
"_dgg Deletes from the cursor position to the beginning of the file.
"_dG Deletes from the cursor position to the end of the file.

Reemplazando Caracteres y Líneas de Texto

Desde las eliminaciones estratégicas en Vim, dirige tu atención al otro lado de la moneda: reemplazar caracteres y líneas de texto. Reemplazar es la pincelada que te permite refinar y redefinir tu texto con precisión. La buena noticia es que Vim te permite realizar reemplazos de caracteres únicos o líneas enteras de texto.

Para reemplazar caracteres y líneas de texto, continúa con estas tareas:

1. Posiciona tu cursor en la línea AuthorizedKeysFile .ssh/authorized_keys, específicamente en el carácter ‘z’ en authorized, como se muestra a continuación:

Positioning the cursor

2. Una vez posicionado, presiona r, lo que le indica a Vim que estás a punto de reemplazar el carácter bajo el cursor e introduce el carácter ‘s’. El comando r te permite reemplazar un carácter sin entrar primero en el modo de inserción (i).

Observa que el carácter ‘z’ en authorized ha sido reemplazado por el carácter ‘s’, cambiando la palabra a authorised.

Replacing a character within a line of text

3. A continuación, coloca tu cursor en el carácter ’z‘ en AuthorizeKeysFile.

Placing the cursor on another character

4. Presiona R (Mayúscula+R) para ingresar al modo de reemplazo, escribe ‘s’ para reemplazar el carácter, pero no salgas del modo de reemplazo aún.

A diferencia del comando r, que solo te permite reemplazar un carácter, el comando R te permite sobrescribir textos existentes a medida que escribes continuamente.

Entering replace mode

5. En última instancia, copia el siguiente texto al portapapeles, mueve tu cursor al principio del archivo y pega el texto que copiaste (Ctrl+Shift+V o Shift+Insert).

Dado que aún estás en modo de reemplazo, al pegar el texto se reemplaza la primera línea en el archivo.

Overwriting an entire line of text via the replace mode

Búsqueda de Textos Dentro de un Archivo

Al estar involucrado en rehacer o deshacer acciones, la habilidad para buscar textos dentro de un archivo resulta útil. Vim te permite buscar palabras específicas, frases o patrones en tu archivo.

Imagina el gran impulso en productividad cuando puedes localizar y manipular rápidamente secciones de texto específicas sin desplazarte sin rumbo.

Para buscar textos dentro de un archivo, sigue estos pasos:

1. Mueve tu cursor al principio del archivo (comando gg), presiona / (barra inclinada hacia adelante) para iniciar el modo de búsqueda, escribe el término de búsqueda log y presiona Enter.

Este comando busca el término que especificaste (log), moviendo el cursor hacia adelante hasta la siguiente ocurrencia del término.

Searching for the term “log”

2. Luego, presiona n para moverte a la siguiente ocurrencia del término.

Moving to the next occurrence of the term “log”

3. Ahora, presiona N (mayúscula + N) para regresar a la ocurrencia anterior.

Moving back to the previous occurrence of the term “log”

Además, Vim ofrece otros atajos de búsqueda como los siguientes para más flexibilidad en la búsqueda:

Command Details
? Initiates a reverse search of a term.
* Performs a forward search for the word under the cursor. Continue pressing * to cycle through further occurrences of the word until it loops back to the first instance.
# Performs a backward search for the word under the cursor. Continuously pressing # works similarly to the * command but cycles until it loops back to the last instance.

Combinando Búsqueda con Otros Comandos en Vim

Mientras navegas por los intrincados paisajes de Vim, ¿por qué no añadir otra capa a tu dominio de edición de texto — combinando la búsqueda con otros comandos?

Vim te permite realizar acciones desde reemplazar ocurrencias específicas hasta eliminar líneas que coinciden con un patrón.

Para presenciar la sinergia entre la búsqueda y la acción en Vim, ejecuta lo siguiente:

1. Mientras estés en el modo de comandos, coloca el cursor en el punto de inicio desde donde deseas comenzar la eliminación (es decir, la primera ocurrencia del término de búsqueda log).

Positioning the cursor at the first occurrence of the term “log”

2. A continuación, escribe d/log y presiona Enter para eliminar todo desde la posición del cursor hasta la siguiente ocurrencia del término log, como se muestra a continuación.

Deleting everything from the cursor up to the next occurrence of “log”

3. Deshaz la acción anterior (comando u) y coloca el cursor en la primera instancia del término de búsqueda log.

Placing the cursor at the first instance of the search term “log”

4. Ahora, ejecuta el siguiente comando para buscar y reemplazar textos dentro de un rango específico, donde:

  • :. – Entra al modo de comandos (:) en la línea actual (.).
  • ,$ – Especifica el rango para la sustitución.
  • s/log/logs/g – Substitute all occurrences of the old word (log) with new (logs) globally (g) within the specified range.
Replacing all occurrences of the term “log” with “logs” within a specified rage

Seleccionar textos mientras estás en el modo visual en Vim

Además de combinar el arte de la búsqueda con otros comandos en Vim, debes descubrir una función que transforma tu experiencia de edición de texto. El modo visual de Vim te permite manipular el texto de manera más interactiva y visual. El modo visual proporciona un método flexible y eficiente para resaltar y operar en porciones de tu texto.

Para seleccionar y editar texto, puedes optar por seleccionar y editar caracteres individuales o seleccionar y editar bloques de texto, de la siguiente manera:

1. Mueve tu cursor al principio del archivo (comando gg) y presiona v para activar el modo visual, como se muestra a continuación.

Entering visual mode

2. Presiona $ para mover tu cursor al final de la línea. Dado que estás en el modo visual, el comando resalta la línea de texto.

Highlighting a line of text

3. Ahora, realiza una acción de copiar y pegar de la siguiente manera:

  • Pulsa y para copiar el texto resaltado al registro de Vim.
  • Pulsa G$ para mover el cursor al final de la última línea en el archivo.
  • Pulsa p para pegar el texto que copiaste (específicamente después del cursor).
    Ten en cuenta que el comando p difiere de las teclas de acceso directo para pegar textos (Ctrl+Shift+V o Shift+Insert). Al copiar el texto con el comando y, el texto se almacena en el registro de Vim, y el comando p pega el texto desde el registro.
Copying and pasting a line of text after the cursor
Copying and pasting a line of text at the cursor’s position

4. Deshaz (u) tu acción anterior, mueve el cursor al principio del archivo (gg) y presiona V (Ctrl+V) para ingresar al modo visual de línea.

A diferencia de seleccionar una sola línea en el modo visual, el modo visual de línea te permite seleccionar varias líneas de texto, como verás en el siguiente paso.

Entering visual line mode

5. Utiliza tu tecla de flecha hacia abajo para seleccionar los caracteres desde el principio del archivo hasta la línea Protocolo 2.

Selecting multiple lines of text via visual line mode

6. Presiona d para cortar las múltiples líneas de texto seleccionadas.

Cutting multiple lines of text

7. Finalmente, pega el texto que cortaste en el paso seis de la siguiente manera:

  • Muévete a la última línea en el archivo (G) y crea una nueva línea debajo (o).
  • Regresa al modo de comando (`Esc`), y pega el texto (`p`).
Pasting multiple lines of text

Conclusión

¡Felicidades! Has navegado por los intrincados reinos de Vim para Linux, desbloqueando un tesoro de sabiduría en edición de texto en el camino. Desde la creación y edición de archivos hasta dominar el arte del modo visual, has lucido como un virtuoso de Vim.

Pero tus aventuras en la línea de comandos apenas han comenzado. ¿Por qué no explorar características avanzadas como macros y plugins para adaptar Vim a tus necesidades?

Utiliza estas habilidades fundamentales para explorar aspectos más profundos de Vim, como la gestión de archivos, patrones de búsqueda complejos y scripts de Vim para personalización.

Source:
https://adamtheautomator.com/vim-for-linux/