Articles

Vim procura e substitui

Posted on

Vim é um editor de texto avançado e popular que vem pré-instalado na maioria das distribuições Linux. É um editor de texto baseado em linha de comando que é principalmente utilizado em sistemas operativos não baseados em GUI. É altamente configurável e vem com muitas características. Um ponto significativo em relação ao Vim é que é altamente optimizado para repetição.

Neste artigo, vamos explicar uma das suas características mais úteis que é pesquisar e substituir. Com um punhado de configurações, pode pesquisar tudo o que quiser, à velocidade de combustão e com granularidade mais fina.

Método #1 Encontrar e substituir uma ocorrência de cada vez (Usando o comando slash e ponto)

A forma mais simples de pesquisar e substituir uma palavra em Vim é usando o comando slash e ponto. A barra oblíqua (/) pode ser usada para procurar uma palavra enquanto o ponto (.) pode ser usado para substituir essa palavra.

Seguir os passos simples abaixo para procurar e substituir qualquer palavra no editor Vim:

  • Abrir o ficheiro em Vim
  • Pressionar a tecla slash (/) juntamente com o termo de procura como “/ search_term” e premir Enter. Irá destacar a palavra seleccionada.
  • depois carregar na tecla cgn para substituir a palavra destacada e introduzir o termo_substituir
  • voltar ao modo normal. Em seguida, prima “n” para passar à próxima ocorrência do termo de pesquisa.
  • A seguir, prima o ponto (.) se quiser substituir a próxima ocorrência pelo mesmo termo_substituto, caso contrário prima novamente a tecla “n” para passar à próxima ocorrência.

É o método mais rápido e melhor para a pesquisa básica e substitui funções uma vez que envolve apenas alguns toques de tecla e menos perturbações no seu trabalho actual. Contudo, para procurar uma palavra que ocorre demasiadas vezes, tornar-se-á uma tarefa repetitiva e demorada.

Com Vim, há outra forma melhor de evitar esta tarefa repetitiva que é usar o comando substituto.

Método #2 Encontrar e Substituir usando o comando Substituto

O comando substituto pode ser usado para executar a pesquisa básica a avançada e substituir funções por um único comando. A sintaxe para este comando é:

$ :s/<search_term><replace_term>/opção

Nota que tem de introduzir este comando no modo normal.

onde

  • S: significa substituir
  • li>search_term: a palavra que deseja pesquisar e substituir

  • replace_term: a palavra com a qual deseja substituí-la por
  • Option: c (para confirmação), g (substituir toda a ocorrência numa linha), i (por ignorar o caso)

Search and Replace

Para efectuar a pesquisa básica e substituir usando o comando substituto, use a seguinte sintaxe:

:%s/<search_term><replace_term>/g

Este comando substituirá todas as instâncias de pesquisa_term pelo substituto_term.

Por exemplo, este é o nosso texto de amostra:

“Ubuntu é um dos SO Linux mais utilizados. O Ubuntu inclui milhares de programas úteis. Com a linha de comando do Ubuntu, é possível realizar quase qualquer tipo de tarefa”.

Para substituir cada ocorrência de “Ubuntu” por “Debian” no texto seguinte, seria utilizado o seguinte comando:

:%s/Ubuntu/Debian/g

Procurar e Substituir numa única linha

Para procurar e substituir a ocorrência de uma palavra apenas numa única linha em vez de todo o ficheiro, utilizar a seguinte sintaxe:

:s/<search_term></replace_term/g

Por exemplo, para substituir a ocorrência de Ubuntu por Debian no texto de amostra acima indicado, seria utilizado o seguinte comando sem o símbolo %:

:s/Ubuntu/Debian/g

Procurar e Substituir por Confirmação

Se quiser que lhe seja pedida confirmação antes de substituir o termo de pesquisa, utilize “c” no final do comando de pesquisa como se segue:

:s/<search_term><replace_term>/gc

O comando acima pedirá confirmação antes de cada substituição (Digite y para sim enquanto n para não).

Procura e Substituição insensível a casos

Quando se efectua a procura e substituição em Vim, por defeito é sensível a maiúsculas e minúsculas. Pode efectuar uma pesquisa insensível a maiúsculas e minúsculas adicionando “i” no fim do comando da seguinte forma:

:s/<search_term><replace_term>/gi

por exemplo, para procurar o termo “Ubuntu” independentemente do seu caso (UBUNTU, Ubuntu, ubuntu, uBuntu), seria utilizado o seguinte comando:

:s/ubuntu/debian/gi

Procurar e substituir a palavra inteira

Por defeito, o comando substituto procura qualquer correspondência, seja parcial ou completa. A fim de fazer corresponder a pesquisa exacta_term e depois substituí-la pelo termo_substituto, anexar a pesquisa _term dentro do “<>”.

Por exemplo, em alguns documentos, pretende pesquisar e substituir a palavra exacta “você” por “eu”. Nesse caso, seria utilizado o seguinte comando:

:s/\<you\>/me/

Encontrará a palavra “você” e substituí-la-á por “eu”. No entanto, não substituirá as palavras como “seu”.

Procura e Substitui Palavras entre Linhas particulares

Para procurar uma palavra entre as linhas particulares em vez de apenas uma linha ou o ficheiro inteiro, pode ser usada a seguinte sintaxe:

:<start_line><end_line>s/<search_term><replace_term/g

por exemplo, para procurar e substituir a ocorrência do Ubuntu por Debian de linhas que vão de 3 a 8 em algum ficheiro, o comando seria

:1,10s/ubuntu/debian/g

para procurar e substituir a ocorrência de uma palavra da linha actual para o próximo x número de linhas, seria utilizada a seguinte sintaxe:

:s/search_term/replace_term/g x

Simplesmente, para procurar e substituir a ocorrência de uma palavra da linha actual para a última linha: seria utilizada a seguinte sintaxe:

:.,$s/search_term/replace_term/g

CONCLUSION

Neste artigo, aprendemos as duas formas de linha de comando para pesquisar e substituir qualquer palavra num editor Vim. O primeiro comando que utilizava a barra e o ponto é o método mais simples e fácil, mas acaba por ser repetitivo quando se está a pesquisar e a substituir uma palavra que ocorre demasiadas vezes. O outro comando que é o comando de substituição uma vez pode parecer difícil e complexo, mas uma vez que se começa a praticá-lo, achá-lo-á extremamente útil em múltiplos cenários.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *