Como substituir palavras em mais de uma linha no editor vi?

Como substituir palavras em mais de uma linha no editor vi?

Por exemplo, no editor vi, um arquivo é criado com 8 linhas da palavra hoje e eu queria saber como mudaria 4 linhas para a palavra ontem com um comando único.

Responder1

A maioria dos comandos ex (ou seja, comandos invocados pressionando :(dois pontos) e depois o nome do comando) que atuam no conteúdo do arquivo permitem que um intervalo seja especificado antes do comando. Este intervalo especifica quais linhas são afetadas pelo comando. A forma geral de um intervalo são dois números separados por vírgula, e o comando atua em todas as linhas do primeiro ao segundo número inclusive. Por exemplo

1,4s/today/yesterday/g

substitui todas as ocorrências de todayby yesterdaynas primeiras quatro linhas do arquivo.

Você pode colocar um sinal antes de um número para torná-lo relativo à linha atual. Por exemplo

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

realiza a substituição na linha anterior, na linha atual e na linha seguinte. Se você incluir a vírgula, mas omitir um dos números, isso significa a linha atual, por exemplo

,+1s/today/yesterday/g

executa a substituição na linha atual e na linha seguinte. Você também pode usar $em vez de um número para indicar a última linha do arquivo. Se você omitir a vírgula e especificar apenas um número, o comando atuará apenas nesta linha, por exemplo

+1s/today/yesterday/g

executa a substituição apenas na linha seguinte.

Responder2

Você pode usar o comando:

:n,m s/today/yesterday/

ou seja, substitua a palavra 'hoje' por 'ontem' da linha n a m.

Responder3

Tente isto:

Vá para o modo de comando no editor vi e tente o comando abaixo:

:%s/today/yesterday/g

g - substitua o hoje pelo ontem globalmente.

informação relacionada