Linux

Buscar y reemplazar en Vim / Vi

Buscar y reemplazar en Vim / Vi

Este artículo describe cómo buscar y reemplazar texto en Vim / Vi.

Vim es el editor de texto de línea de comandos más popular. Viene preinstalado en macOS y la mayoría de las distribuciones de Linux. Encontrar y reemplazar texto en Vim es rápido y fácil.

Buscar y reemplazar básicos #

En Vim, puede buscar y reemplazar texto usando el :sustituir (:s) comando.

Para ejecutar comandos en Vim, debe estar en modo normal, el modo predeterminado al iniciar el editor. Para volver al modo normal desde cualquier otro modo, simplemente presione la tecla 'Esc'.

La forma general del comando sustituto es la siguiente:

: [rango] s / patrón / cadena / [banderas] [recuento] 

El comando busca cada línea en [distancia] para patrón, y lo reemplaza con un cuerda. [contar] es un número entero positivo que multiplica el comando.

Si no [distancia] y [contar] se dan, solo se reemplaza el patrón que se encuentra en la línea actual. La línea actual es la línea donde se coloca el cursor.

Por ejemplo, para buscar la primera aparición de la cadena 'foo' en la línea actual y reemplazarla con 'bar', usaría:

: s / foo / bar / 

Para reemplazar todas las apariciones del patrón de búsqueda en la línea actual, agregue el gramo bandera:

: s / foo / bar / g 

Si desea buscar y reemplazar el patrón en todo el archivo, use el carácter de porcentaje % como rango. Este carácter indica un rango desde la primera hasta la última línea del archivo:

:% s / foo / bar / g 

Si el cuerda parte se omite, se considera como una cadena vacía y se elimina el patrón coincidente. El siguiente comando elimina todas las instancias de la cadena 'foo' en la línea actual:

: s / foo // g 

En lugar del carácter de barra (/), puede utilizar cualquier otro carácter no alfanumérico de un solo byte excepto como delimitador. Esta opción es útil cuando tiene el carácter '/' en el patrón de búsqueda o en la cadena de reemplazo.

: s | foo | bar | 

Para confirmar cada sustitución, utilice el C bandera:

: s / foo / bar / gc 
reemplazar con barra (y / n / a / q / l / ^ E / ^ Y)? 

prensa y para reemplazar el fósforo o l para reemplazar el fósforo y salir. prensa norte saltarse el partido y q o Esc para salir de la sustitución. La a La opción sustituye el partido y todas las apariciones restantes del partido. Para desplazar la pantalla hacia abajo, use CTRL + Y, y para desplazarse hacia arriba, use CTRL + E.

También puede utilizar expresiones regulares como patrón de búsqueda. El siguiente comando reemplaza todas las líneas que comienzan con 'foo' con 'Vim es el mejor':

:% s / ^ foo.* / Vim es el mejor / gc 

La ^ (símbolo de intercalación) coincide con el comienzo de una línea y .* coincide con cualquier número de caracteres.

Sensibilidad de mayúsculas y minúsculas #

De forma predeterminada, la operación de búsqueda distingue entre mayúsculas y minúsculas; la búsqueda de "FOO" no coincidirá con "Foo".

Para ignorar las mayúsculas y minúsculas del patrón de búsqueda, utilice la I bandera:

: s / Foo / bar / gi 

Otra forma de forzar la ignorancia de mayúsculas y minúsculas es agregar \C después del patrón de búsqueda. Por ejemplo, / Linux \ c realiza la búsqueda de caso ignorado.

Si cambió la configuración predeterminada de mayúsculas y minúsculas y desea realizar una búsqueda sensible a mayúsculas y minúsculas, utilice la I bandera:

: s / foo / bar / gi 

Mayúsculas \C después de que el patrón también fuerza la búsqueda de coincidencia de casos.

Rango de búsqueda #

Cuando no se especifica ningún rango, el comando sustituto opera solo en la línea actual.

El rango puede ser una línea o un rango entre dos líneas. Los especificadores de línea están separados por , o ; caracteres. El rango se puede especificar usando el número de línea absoluto o símbolos especiales.

Por ejemplo, para sustituir todas las apariciones de 'foo' por 'bar' en todas las líneas desde la línea 3 hasta la línea 10, usaría:

: 3,10 s / foo / bar / g 

El rango es inclusivo, lo que significa que la primera y la última línea se incluyen en el rango.

El punto . carácter indica la línea actual y PS - el signo de dólar la última línea. Para sustituir 'foo' en todas las líneas comenzando desde la línea actual hasta la última:

:.,$ s / foo / bar / 

El especificador de línea también se puede establecer usando el símbolo '+' o '-', seguido de un número que se suma o resta del número de línea anterior. Si se omite el número después del símbolo, el valor predeterminado es 1.

Por ejemplo, para sustituir cada 'foo' por 'bar' comenzando desde la línea actual y las cuatro líneas siguientes, escriba:

:.,+4 s / foo / bar / g 

Sustituyendo palabra completa #

El comando sustituto busca el patrón como una cadena, no como una palabra completa. Si, por ejemplo, estaba buscando "gnu", la búsqueda encuentra coincidencias donde "gnu" está incrustado en palabras más grandes, como "cygnus" o "magnum".

Para buscar una palabra completa, escriba \< para marcar el comienzo de una palabra, ingrese el patrón de búsqueda, escriba \> para marcar el final de una palabra:

Por ejemplo, para buscar la palabra "foo", usaría \:

:s/\/bar/ 

Número de historial sustituto

Vim realiza un seguimiento de todos los comandos que ejecuta en la sesión actual. Para explorar el historial de comandos sustitutos anteriores, ingrese :s y use las teclas de flecha arriba / abajo para encontrar una operación sustituta anterior. Para ejecutar el comando, simplemente presione Ingresar. También puede editar el comando antes de realizar la operación.

Ejemplos #

Líneas de comentario (agregar # antes de la línea) de 5 a 20:

: 5,20s / ^ / # / 

Descomente las líneas de la 5 a la 20, revierta los cambios anteriores:

: 5,20s / ^ # // 

Reemplace todas las instancias de 'manzana', 'naranja' y 'mango' con 'fruta':

:% s / manzana \ | naranja \ | mango / fruta / g 

Elimine los espacios en blanco finales al final de cada línea:

:% s / \ s \ + $ // e 

Conclusión #

Buscar y reemplazar es una característica poderosa de Vim, que le permite realizar cambios en su texto rápidamente.

No dude en dejar un comentario si tiene alguna pregunta.

Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...
Cómo descargar y jugar Sid Meier's Civilization VI en Linux
Introducción al juego Civilization 6 es una versión moderna del concepto clásico introducido en la serie de juegos Age of Empires. La idea era bastant...
Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...