Linux

Encontre e substitua no Vim / Vi

Encontre e substitua no Vim / Vi

Este artigo descreve como localizar e substituir texto no Vim / Vi.

Vim é o editor de texto de linha de comando mais popular. Ele vem pré-instalado no macOS e na maioria das distribuições Linux. Encontrar e substituir texto no Vim é rápido e fácil.

Número básico de localização e substituição

No Vim, você pode localizar e substituir texto usando o :substituto (: s) comando.

Para executar comandos no Vim, você deve estar no modo normal, o modo padrão ao iniciar o editor. Para voltar ao modo normal a partir de qualquer outro modo, basta pressionar a tecla 'Esc'.

A forma geral do comando substituto é a seguinte:

: [intervalo] s / padrão / string / [sinalizadores] [contagem] 

O comando pesquisa cada linha em [alcance] para padronizar, e o substitui por um fragmento. [contar] é um número inteiro positivo que multiplica o comando.

Se não [alcance] e [contar] são fornecidos, apenas o padrão encontrado na linha atual é substituído. A linha atual é a linha onde o cursor está colocado.

Por exemplo, para pesquisar a primeira ocorrência da string 'foo' na linha atual e substituí-la por 'bar', você usaria:

: s / foo / bar / 

Para substituir todas as ocorrências do padrão de pesquisa na linha atual, adicione o g bandeira:

: s / foo / bar / g 

Se você deseja pesquisar e substituir o padrão em todo o arquivo, use o caractere de porcentagem % como um intervalo. Este caractere indica um intervalo da primeira à última linha do arquivo:

:% s / foo / bar / g 

Se o fragmento parte é omitida, é considerada uma string vazia e o padrão correspondente é excluído. O comando a seguir exclui todas as instâncias da string 'foo' na linha atual:

: s / foo // g 

Em vez do caractere de barra (/), você pode usar qualquer outro caractere de byte único não alfanumérico, exceto como um delimitador. Esta opção é útil quando você tem o caractere '/' no padrão de pesquisa ou na string de substituição.

: s | foo | bar | 

Para confirmar cada substituição, use o c bandeira:

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

Aperte y para substituir o fósforo ou eu para substituir a partida e sair. Aperte n pular a partida e q ou Esc sair da substituição. O uma opção substitui a partida e todas as ocorrências restantes da partida. Para rolar a tela para baixo, use CTRL + Y, e para rolar para cima, use CTRL + E.

Você também pode usar expressões regulares como um padrão de pesquisa. O comando abaixo substitui todas as linhas que começam com 'foo' por 'Vim é o melhor':

:% s / ^ foo.* / Vim é o melhor / gc 

O ^ (circunflexo) corresponde ao início de uma linha e .* corresponde a qualquer número de quaisquer caracteres.

Sensibilidade de caso #

Por padrão, a operação de pesquisa diferencia maiúsculas de minúsculas; pesquisar por “FOO” não corresponderá a “Foo”.

Para ignorar maiúsculas e minúsculas para o padrão de pesquisa, use o eu bandeira:

: s / Foo / bar / gi 

Outra maneira de forçar ignorar maiúsculas e minúsculas é anexar \ c depois do padrão de pesquisa. Por exemplo, / Linux \ c executa pesquisa ignorar caso.

Se você alterou a configuração padrão de maiúsculas e minúsculas e deseja realizar uma pesquisa com distinção entre maiúsculas e minúsculas, use o eu bandeira:

: s / foo / bar / gi 

Maiúsculas \ C depois que o padrão também força a busca por correspondência de maiúsculas e minúsculas.

Número do intervalo de pesquisa

Quando nenhum intervalo é especificado, o comando substitute opera apenas na linha atual.

O intervalo pode ser uma linha ou um intervalo entre duas linhas. Os especificadores de linha são separados com o , ou ; personagens. O intervalo pode ser especificado usando o número de linha absoluto ou símbolos especiais.

Por exemplo, para substituir todas as ocorrências de 'foo' por 'bar' em todas as linhas começando da linha 3 até a linha 10, você usaria:

: 3,10s / foo / bar / g 

O intervalo é inclusivo, o que significa que a primeira e a última linha estão incluídas no intervalo.

O ponto . caractere indica a linha atual e $ - o cifrão na última linha. Para substituir 'foo' em todas as linhas, começando da linha atual até a última:

:.,$ s / foo / bar / 

O especificador de linha também pode ser definido usando o símbolo '+' ou '-', seguido por um número que é adicionado ou subtraído do número da linha anterior. Se o número após o símbolo for omitido, o padrão é 1.

Por exemplo, para substituir cada 'foo' por 'bar' começando na linha atual e nas próximas quatro linhas, digite:

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

Substituindo palavra inteira #

O comando substitute procura o padrão como uma string, não uma palavra inteira. Se, por exemplo, você estiver procurando por “gnu”, a pesquisa encontrará correspondências onde “gnu” está incorporado em palavras maiores, como “cygnus” ou “magnum”.

Para pesquisar uma palavra inteira, digite \< para marcar o início de uma palavra, digite o padrão de pesquisa, digite \> para marcar o final de uma palavra:

Por exemplo, para pesquisar a palavra "foo", você usaria \:

: s / \/bar/ 

Histórico substituto #

O Vim acompanha todos os comandos que você executa na sessão atual. Para navegar no histórico de comandos substitutos anteriores, digite : s e use as teclas de seta para cima / para baixo para encontrar uma operação substituta anterior. Para executar o comando, simplesmente pressione Entrar. Você também pode editar o comando antes de realizar a operação.

Exemplos #

Linhas de comentário (adicionar # antes da linha) de 5 a 20:

: 5,20s / ^ / # / 

Remova as linhas de 5 a 20, reverta as alterações anteriores:

: 5,20s / ^ # // 

Substitua todas as ocorrências de 'maçã', 'laranja' e 'manga' por 'fruta':

:% s / maçã \ | laranja \ | manga / fruta / g 

Remova o espaço em branco no final de cada linha:

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

Conclusão #

Pesquisar e substituir é um recurso poderoso do Vim, que permite que você faça alterações em seu texto rapidamente.

Sinta-se à vontade para deixar um comentário se tiver alguma dúvida.

Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...
Como baixar e jogar Sid Meier's Civilization VI no Linux
Introdução ao jogo Civilization 6 é uma versão moderna do conceito clássico introduzido na série de jogos Age of Empires. A ideia era bastante simples...
Como instalar e jogar Doom no Linux
Introdução ao Doom A série Doom teve origem nos anos 90 após o lançamento do Doom original. Foi um sucesso instantâneo e, a partir desse momento, a sé...