VI/Vim – DÍA 4
Buscar y reemplazar texto (incluyendo patrones simples)
1. Objetivo del día
Aprender a:
- buscar texto dentro de un archivo
- navegar entre los resultados
- usar búsquedas hacia adelante y hacia atrás
- usar reemplazos simples
- reemplazar en una línea, un rango o todo el archivo
Esto te permitirá editar archivos grandes de forma rápida y precisa, algo fundamental en tareas de sysadmin/devops.
2. Requisitos
- Estar cómodo en modo normal
- Saber moverte por texto (Día 2)
- Saber editar básico (Día 3)
3. Teoría esencial
VI/Vim tiene un sistema de búsqueda extremadamente rápido y eficiente, totalmente integrado con los comandos de navegación.
4. Búsqueda básica
Buscar una palabra hacia adelante:
/palabra
Ejemplo:
/error
Pulsa ENTER.
Navegar entre coincidencias:
n siguiente resultado
N resultado anterior
Buscar hacia atrás:
?palabra
Buscar la palabra bajo el cursor:
*
Buscar palabra exacta hacia adelante.
#
Buscar hacia atrás.
Esto es muy útil en Configs, JSON, YAML o logs.
5. Búsqueda “fuzzy” con patrones simples
VI entiende patrones básicos (no es regex completo, pero es útil).
Ejemplos:
/[0-9]
Busca dígitos.
/error.|warn.
Busca palabras que empiecen por «error» o «warn».
(Más adelante, si quieres, puedes crear un tutorial extra SOLO de regex.)
6. Reemplazar texto (comando :s)
El reemplazo se hace desde modo de comandos (:).
6.1. Reemplazar en la línea actual:
:s/buscar/reemplazar
Ejemplo:
:s/error/aviso
Solo cambia la primera coincidencia de esa línea.
6.2. Reemplazar TODAS las coincidencias en la línea:
:s/buscar/reemplazar/g
La g significa “global”.
6.3. Reemplazar en TODO el archivo:
:%s/buscar/reemplazar/g
Ejemplo:
:%s/localhost/127.0.0.1/g
Cambia todas las apariciones.
6.4. Confirmar cada reemplazo (muy útil):
:%s/palabra/nueva/gc
Vim te preguntará:
y→ sín→ noa→ todosq→ salirl→ último
Ideal para configuraciones delicadas.
7. Reemplazos por rango
Solo en las líneas 10 a 20:
:10,20s/old/new/g
Del inicio del archivo hasta la línea donde estás:
:1,.s/error/warning/g
De tu línea actual hasta el final:
:.,$s/foo/bar/g
8. Práctica guiada (20–30 min)
8.1. Abrir un archivo de prueba
vi logs.txt
Y pega este texto (modo inserción):
INFO Starting service
INFO Checking configuration
ERROR Connection failed
WARNING Low memory
INFO Retrying connection
ERROR Timeout occurred
Guarda con :w.
8.2. Busca patrones
/ERROR- Usa
nyN - Usa
*en la palabra “INFO” para buscarla automáticamente
8.3. Reemplazos reales
- Cambiar “ERROR” por “FAIL” solo en la línea actual:
:s/ERROR/FAIL - Cambiar todas las “WARNING” a “ALERT” en todo el archivo:
:%s/WARNING/ALERT/g - Cambiar “INFO” a “INFO_DEBUG” con confirmación:
:%s/INFO/INFO_DEBUG/gc - Cambiar “Retrying” → “Reattempting” solo en líneas 3 a 5:
:3,5s/Retrying/Reattempting/g
9. Checklist del Día 4
- Buscas texto con
/y? - Navegas resultados con
nyN - Usas
*para buscar palabra bajo cursor - Reemplazas en línea (
:s/.../.../) - Reemplazas en todo el archivo (
:%s/.../.../g) - Conoces la opción de confirmación (
c) - Puedes restringir reemplazos a un rango de líneas
10. Ejercicio sugerido
En un archivo de 20–30 líneas:
- Busca todas las veces que aparece una palabra común (“server”, “error”, “config”…).
- Sustituye una palabra por otra en todo el archivo.
- Haz un reemplazo con confirmación.
- Reemplaza solo entre las líneas 5 y 15.
- Usa
*para buscar la palabra bajo el cursor.
11. Día 4 completado
Este día cambia completamente la experiencia con VI/Vim:
ahora ya puedes navegar y manipular archivos grandes como un profesional.
En el Día 5, veremos:
- cómo trabajar con múltiples archivos
- cómo usar buffers
- cómo saltar entre documentos sin cerrar
- cómo abrir varios archivos a la vez
Esto es imprescindible para editar configuraciones complejas o revisar varios logs al mismo tiempo.
