Vim: Guía técnica del editor de texto personalizable

Introducción a Vi y Vim

Vi es un editor de texto esencial en sistemas Unix y Linux, conocido por su eficiencia y potencia. Vim, una versión mejorada de Vi, ofrece características avanzadas como autocompletado de código, compilación integrada y gestión de errores, lo que lo convierte en una herramienta popular entre los desarrolladores. A diferencia de los editores con interfaz gráfica, Vim se basa en comandos de texto y no incluye menús visuales, lo que permite una personalización profunda.

Modos de operación en Vim

Vim opera en tres modos principales para gestionar la edición de texto:

  • Modo comando: Este modo se activa al presionar la tecla Esc desde cualquier otro modo. Aquí, los caracteres ingresados se interpretan como comandos para manipular el texto, como mover el cursor o realizar búsquedas.
  • Modo inserción: Para entrar a este modo, se utilizan comandos como i, a o o. En este modo, el texto ingresado se inserta directamente en el documento. Para volver al modo comando, se pulsa Esc.
  • Modo línea de comandos: Se accede presionando : en modo comando. Este modo permite ejecutar comandos complejos, como guardar archivos o dividir pantallas. Al finalizar el comando, Vim regresa automáticamente al modo comando.

Operaciones básicas en Vim

A continuación, se describen comandos fundamentales para trabajar con Vim, agrupados por funcionalidad.

Entrada de texto

i: Insertar texto antes del cursor.
I: Insertar al inicio de la línea actual.
a: Añadir texto después del cursor.
A: Añadir al final de la línea.
o: Abrir una nueva línea debajo y entrar en modo inserción.
O: Abrir una nueva línea encima y entrar en modo inserción.

Navegación con el cursor

h: Desplazar el cursor a la izquierda.
j: Mover el cursor hacia abajo.
k: Desplazar el cursor hacia arriba.
l: Mover el cursor a la derecha.
M: Posicionar el cursor en el centro de la pantalla.
L: Ir al inicio de la última línea visible.
G: Saltar a una línea específica (ejemplo: 5G para la línea 5).
w: Avanzar a la siguiente palabra.
b: Retroceder a la palabra anterior.
{: Saltar al inicio del párrafo anterior.
}: Saltar al inicio del párrafo siguiente.
Ctrl-d: Desplazarse media pantalla hacia abajo.
Ctrl-u: Desplazarse media pantalla hacia arriba.
Ctrl-f: Avanzar una pantalla completa.
Ctrl-b: Retroceder una pantalla completa.
gg: Ir al inicio del archivo.
G: Ir al final del archivo.

Edición de texto

x: Eliminar el carácter bajo el cursor.
X: Eliminar el carácter anterior al cursor.
dd: Borrar la línea actual (ejemplo: 3dd para borrar 3 líneas).
D: Eliminar desde el cursor hasta el final de la línea.
d0: Borrar desde el inicio de la línea hasta el cursor.
dw: Eliminar la palabra a partir del cursor.
u: Deshacer el último cambio.
Ctrl-r: Rehacer un cambio deshecho.
.: Repetir la última operación de edición.
>>: Indentar la línea a la derecha.
<<: Indentar la línea a la izquierda.
yy: Copiar la línea actual (ejemplo: 5yy para copiar 5 líneas).
p: Pegar el contenido copiado debajo del cursor.
v: Activar modo visual por caracteres para seleccionar texto.
V: Activar modo visual por líneas para seleccionar bloques de texto.

Reemplazo y búsqueda

r: Reemplazar el carácter bajo el cursor.
R: Entrar en modo reemplazo para sobrescribir texto.
/buscar_patron: Iniciar una búsqueda hacia adelante del patrón indicado.
n: Ir a la siguiente coincidencia de la búsqueda.
N: Ir a la coincidencia anterior.

Para reemplazos globales, se usa el modo línea de comandos. Por ejemplo, reemplazar todas las ocurrencias de "viejo" por "nuevo" en el archivo:

:%s/viejo/nuevo/g

Para limitar el reemplazo a líneas específicas, como de la 1 a la 10:

:1,10s/viejo/nuevo/g

También es posible ejecutar comandos del sistema operativo desde Vim, precediendo el comando con ! en modo línea de comandos.

División de pantallas en Vim

Vim permite dividir la pantalla para trabajar con múltiples archivos o secciones simultáneamente.

Iniciar división

  • Verticalmente con vim -O archivo1 archivo2 (mayúscula O).
  • Horizontalmente con vim -o archivo1 archivo2 (minúscula o).

Comandos de división durante la edición

sp [archivo]: Dividir horizontalmente, abriendo un archivo opcional.
vsp [archivo]: Dividir verticalmente, abriendo un archivo opcional.
Ctrl-w s: Dividir horizontalmente el archivo actual.
Ctrl-w v: Dividir verticalmente el archivo actual.
:sp nombre_archivo: División horizontal con un nuevo archivo.
:vsp nombre_archivo: División vertical con un nuevo archivo.

Navegación entre divisiones

Ctrl-w w: Alternar entre ventanas.
Ctrl-w k: Mover el cursor a la ventana superior.
Ctrl-w j: Mover el cursor a la ventana inferior.
Ctrl-w l: Mover el cursor a la ventana derecha.
Ctrl-w h: Mover el cursor a la ventana izquierda.

Gestión de ventanas

Ctrl-w c: Cerrar la ventana actual.
Ctrl-w q: Cerrar la ventana actual; si es la última, salir de Vim.
Ctrl-w K: Mover la ventana hacia arriba.
Ctrl-w J: Mover la ventana hacia abajo.
Ctrl-w L: Mover la ventana a la derecha.
Ctrl-w H: Mover la ventana a la izquierda.
Ctrl-w +: Aumentar la altura de la ventana.
Ctrl-w -: Disminuir la altura de la ventana.
Ctrl-w =: Igualar alturas de todas las ventanas.
Ctrl-w >: Aumentar el ancho de la ventana.
Ctrl-w <: Disminuir el ancho de la ventana.
Ctrl-w 30<: Ajustar el ancho de la ventana en 30 columnas (ejemplo).

Configuración de Vim como entorno de desarrollo

Vim puede personalizarse para funcionar como un IDE básico meidante plugins y configuraciones. Comandos útiles incluyen:

Ctrl-p: Generar etiquetas para navegación de código.
Ctrl-]: Saltar a la definición de una función.
Ctrl-t: Volver desde una definición de función.
Ctrl-o: Abrir un explorador de archivos en el lado izquierdo.
F4: Mostrar una lista de funciones en el lado derecho.
Ctrl-n: Activar autocompletado y desplazarse entre sugerencias.

El archivo de configuración de Vim, .vimrc, se puede ubicar en dos lugares: /etc/vim/vimrc para configuraciones globales, o ~/.vimrc para configuraciones del usuario, teniendo esta última prioridad.

Etiquetas: vim vi text-editor linux command-line

Publicado el 6-9 05:08