O Vim é um poderoso editor de texto modal, altamente configurável e amplamente utilizado em ambientes de desenvolvimento. Ele possui uma curva de aprendizado íngreme, mas oferece recursos avançados, como suporte a plugins, divisão de janelas e edição eficiente através de comandos e atalhos de teclado.

Neste tutorial, explorarei os diferentes métodos disponíveis para realizar uma pesquisa e substituição com o editor Vim.
Vendo se o Editor VIM já Está Instalado
O editor Vim vem pré-instalado em algumas distribuições Linux. Então vamos primeiro descobrir se o editor Vim está instalado. Execute vim –version
[root@oraclelinux86 ~]# vim --version VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Aug 5 2022 07:43:09) Correções incluídas: 1-1763
Se aparecer erro de “comando não encontrado” ou “command don’t found” então irá precisar instalar. Basta usar o gerenciador de pacotes da sua distro, exemplo:
dnf install vim
ou
apt install vim
Arquivo de exemplo para nossos testes
O meu arquivo se chama texto.txt e contém o seguinte conteúdo:
"A beleza da natureza é inigualável. As árvores balançam suavemente ao vento, enquanto o sol se põe no horizonte, pintando o céu de tons quentes e dourados. Os pássaros cantam melodias suaves, criando uma sinfonia natural que acalma a alma. Em meio a essa serenidade, encontramos paz e inspiração. A vida é feita de momentos como este, onde a simplicidade da natureza nos lembra da verdadeira essência da vida. Às vezes, tudo o que precisamos é desacelerar, apreciar o presente e nos reconectar com o mundo ao nosso redor. Na natureza, encontramos respostas para muitas perguntas. Aprendemos lições sobre paciência, renovação e equilíbrio. É um lembrete constante de que, em meio ao caos do mundo moderno, a beleza simples e intemporal da natureza sempre estará lá para nos guiar e nos acolher."
Acessando o vim
Para editar o meu arquivo faço,
vim texto.txt
Pesquisa básica e substituição usando barra e ponto
#1 Dentro do editor Vim, precisamos pressionar a tecla de barra (/) e procurar a palavra uma palavra. Por exemplo, para procurar pela palavra sol,
/sol
Isso destacará a primeira ocorrência da palavra “sol” e podemos pressionar a tecla Enter para acessá-la.
#2 Digite i de igreja para entrar no modo de edição de texto. Se quiser retornar ao modo anterior basta teclar Esc.
i
No modo de inserção, podemos alterar o texto como se estivéssemos em qualquer outro editor de texto, como o Bloco de notas do Windows, por exemplo.
Dica: você pode digitar /sol para buscar pela palavra sol e então teclar cgn para apagar “sol” e digitar uma nova palavra em seu lugar.
Pesquisar e substituir usando o comando :s
Também podemos usar o comando substitute(substitua) do editor Vim para executar funções básicas e avançadas de pesquisa e substituição.
O comando substituto tem esta sintaxe básica:
:s/<frase_procurada>/<frase_que_substituirar>/opcoes
Precisamos inserir este comando no modo normal.
O “:s” representa o substituto e a frase_procurada é a palavra que queremos pesquisar. frase_que_substituirar representa a palavra pela qual queremos substituir a palavra pesquisada. As opções incluem c para confirmação, i para ignorar o caso e g para substituir todas as ocorrências.
Substituindo uma única linha
Vamos pesquisar e substituir todas as ocorrências em uma única linha:
:s/sol/lua/g
Isso substitui a primeira ocorrência da palavra “sol” por “lua”. O arquivo texto.txt agora será semelhante a este:
“A beleza da natureza é inigualável. As árvores balançam suavemente ao vento, enquanto o lua se põe no horizonte…
Substituindo todas as ocorrências encontradas
Para pesquisar e substituir todas as ocorrências em cada linha do arquivo, precisamos modificar ligeiramente o comando anterior:
:%s/sol/lua/g
O símbolo % nos permite acessar todo o conteúdo do arquivo e podemos substituir todas as ocorrências em cada linha.
Não diferencia maiúsculas de minúsculas
Por padrão, o comando substituto diferencia maiúsculas de minúsculas sempre que o usamos para realizar uma pesquisa e substituição. Podemos realizar pesquisas sem distinção entre maiúsculas e minúsculas adicionando a opção “i” no final do nosso comando anterior.
:%s/horizonte/ambiente/gi
Com confirmação
O comando substituto também vem com a opção de confirmação “c”. Adicionar esta opção no final do comando de pesquisa e substituição nos fornece um aviso antes que uma substituição seja feita.
:%s/horizonte/ambiente/gc
Cada vez que recebemos um prompt, temos a opção de pressionar “y” para sim, “n” para não e “a” para todas as ocorrências. Também podemos pressionar “q” para sair ou “l” para substituir apenas uma linha.
em linhas específicas
O comando de substituir do vim nos permite pesquisar e substituir linhas específicas do arquivo, em vez de pesquisar apenas uma linha ou o arquivo inteiro. Tem esta sintaxe básica:
:numero_linha_inicial, numero_linha_final s/<termo_procurado>/<termo_a_ser_substituido>/g
Vamos substituir a ocorrência da palavra “vento” apenas na primeira linha:
:0, 1 s/vento/ventania/gi
Também podemos especificar o número de linhas a serem pesquisadas a partir da linha atual. Supondo que estávamos na primeira linha, vamos substituir a palavra “pássaros” na segunda linha por “aves”:
:s/pássaros/aves/g 2
Como nosso arquivo texto.txt contém apenas dez linhas, não podemos especificar um número que esteja fora do intervalo de linhas presentes.
Finalmente, nos casos em que temos múltiplas linhas, podemos pesquisar desde a linha atual até a última linha.
Vamos substituir a palavra “serenidade” por “calmaria” na quarta linha do arquivo texto.txt:
:.,$s/serenidade/calmaria/g
Vamos entender o comando acima. Aqui, estamos especificando um intervalo onde o ponto (.) representa a linha atual e “$” representa a última linha.
Uma palavra exata e inteira
O comando substituir do vim encontra correspondências parciais e completas por padrão. Isso nos permite alterar apenas algumas partes de uma palavra, em vez da palavra inteira. No entanto, em alguns casos especiais, poderemos precisar procurar uma palavra exata e depois substituí-la.
Vamos combinar a palavra exata “natural” e substituí-la por “natureza ambiental“:
:s/\<natural\>/natureza ambiental/gi
Com esse comando, podemos substituiu a palavra “natural” na segunda linha e pular a palavra “naturalizado” caso existisse.