¿Cómo reemplazar palabras en más de una línea en el editor vi?

¿Cómo reemplazar palabras en más de una línea en el editor vi?

Por ejemplo, en el editor vi se crea un archivo con 8 líneas de la palabra hoy y me preguntaba cómo cambiaría 4 líneas de la palabra ayer con el comando once.

Respuesta1

La mayoría de los comandos ex (es decir, los comandos invocados presionando :(dos puntos) y luego el nombre del comando) que actúan sobre el contenido del archivo permiten especificar un rango antes del comando. Este rango especifica qué líneas se ven afectadas por el comando. La forma general de un rango son dos números separados por una coma y el comando actúa en todas las líneas desde el primer número hasta el segundo inclusive. Por ejemplo

1,4s/today/yesterday/g

reemplaza todas las apariciones de todaypor yesterdayen las primeras cuatro líneas del archivo.

Puede poner un signo antes de un número para hacerlo relativo a la línea actual. Por ejemplo

-1,+1s/today/yesterday/g

realiza el reemplazo en la línea anterior, la línea actual y la línea siguiente. Si incluye la coma pero omite uno de los números, eso significa la línea actual, por ejemplo

,+1s/today/yesterday/g

realiza el reemplazo en la línea actual y en la línea siguiente. También puede utilizar $en lugar de un número para referirse a la última línea del archivo. Si omite la coma y especifica solo un número, entonces el comando actúa solo en esta línea, por ejemplo

+1s/today/yesterday/g

realiza el reemplazo solo en la siguiente línea.

Respuesta2

Puedes usar el comando:

:n,m s/today/yesterday/

es decir, reemplace la palabra 'hoy' por 'ayer' de la línea n a la m.

Respuesta3

Prueba esto :

Vaya al modo de comando en el editor vi y pruebe el siguiente comando:

:%s/today/yesterday/g

g - reemplace hoy con ayer a nivel mundial.

información relacionada