VIM Find and Replace

Vi/Vim é um dos lendários editores de texto por aí que ainda encontra o seu lugar no arsenal de utilizadores avançados e profissionais. O Vim é especialmente popular entre os programadores. Cada distribuição Linux lá fora inclui o Vim por defeito. Se estiver a correr um sistema não-Linux, deverá ainda poder desfrutar deste editor de texto de qualidade de qualquer sistema. Obtenha Vim.

Porquê este antigo software ainda é relevante? Porque é um atalho leve, de teclado para quase todas as funções, buscas de expressão incorporadas, e um ecossistema de plugins robusto, estável e saudável. Para não mencionar outras características do editor de texto dos tempos modernos, como um belo destaque de sintaxe. Encontrará o Vim mais popular entre os programadores porque o Vim requer um foco pesado no teclado. Esta é uma boa prática para programadores.

Como o título do artigo sugere, o objectivo deste guia é oferecer-lhe uma melhor compreensão das funcionalidades de pesquisa e substituição do Vim. Vim não é nada a temer. De facto, é uma das superpotências que terá sempre ao seu lado.

P>A princípio, precisamos de um texto de demonstração. Para aprender Vim, a forma mais segura é criar um ficheiro de texto descartável e fazer o que quiser com ele. Desta forma, mesmo que algo corra mal, nada de importante se perde.

Utilizo o Manjaro Linux como o meu sistema Linux. Aprenda como instalar o Manjaro Linux. É uma distro baseada em Arch usando o pacman como o gestor de pacotes padrão. Gerei um ficheiro de texto contendo todos os pacotes instalados no meu sistema.

pacman -Qqe >> PackageList.txt

cat PackageList.txt

Agora, lançar o ficheiro de texto em Vim!

vim PackageList.txt

Vim search

Para a pesquisa, Vim usa a seguinte estrutura.

div>?<search_string>

Por exemplo, vamos procurar por “python”.

?python

Por defeito, a pesquisa assentará num resultado fixo. Para ir para o próximo/anterior resultado de pesquisa, use as seguintes teclas.

Nota: Não se esqueça de carregar em Enter antes de usar as seguintes teclas. Caso contrário, o termo de pesquisa mudará!

n – Encontrar a próxima correspondência
N – Encontrar a correspondência anterior

Esta é apenas a forma básica de pesquisa. Vamos experimentar um método um pouco mais poderoso.

/\<search_string>>

Here, \< é responsável por indicar o início da cadeia de pesquisa e /> é para o fim da cadeia de pesquisa.

Apenas como o exemplo anterior, usar n ou N (dependente de caso) para navegar nos resultados da pesquisa.

A pesquisa também suporta a utilização de wild cards. Por exemplo, existem muitos pacotes com extensão “python-“.

Para procurar todos eles, podemos usar “python*”. Aqui, o asterisco está a dizer que qualquer coisa depois do prefixo “python”. Para qualquer pesquisa, o asterisco pode estar em qualquer parte do termo de pesquisa. Onde quer que esteja, diz a Vim para preencher a lacuna com todos os dados possíveis de todo o ficheiro de texto.

/\<python*/>

Quando se está a pesquisar, O Vim colocará sempre o cursor no carácter inicial dos jogos. Esta é a acção padrão. Não se preocupe; Vim permite alterar a posição por defeito do cursor de aterragem.

/python/e

Aqui, o último “e” diz para alcançar o cursor no fim da frase correspondente. Utilizando o exemplo seguinte, também se pode dizer para aterrar o cursor abaixo ou acima do resultado da pesquisa.

/<search_string>/+2

/<search_string>/-3

É também possível compensar o cursor desde o início/fim da procura. Por exemplo, o seguinte comando irá colocar o cursor a 3 caracteres ao lado do início.

/<search_string>/s+3

/<search_string>/b+3

Hahoo, o “s” indica o início, o “+3” indica 3 caracteres desde o início. “b” significa “begin” (começar). Também funciona de forma semelhante a “s”. A partir da captura de ecrã, Vim traduz automaticamente “b” para “s”.

Se estiver interessado em compensar a partir do fim da procura, use “e”.

/<search_string/e-2

Aqui está outra forma fantástica de efectuar uma pesquisa num ficheiro de texto.

:%s/< procura_padrão>//gn

Uma explicação detalhada do comando encontra-se na secção seguinte do artigo.

Vim substituir

Localizar e substituir é outra função comum e obrigatória para qualquer editor de texto de qualidade. Vim, sendo uma lenda, oferece uma maneira robusta de encontrar e substituir o seu texto desejado de uma forma simples. O comando para a função é simples mas permite fazer trabalhos realmente complexos.

:<range> s/<search_string><replace_string><modifier>

Div>Dividamos cada parte.

  • alcance – Definir o intervalo de execução da função “encontrar e substituir”. Existem 2 valores diferentes.
    • % – Executar em todo o ficheiro
    • <start _line><end_line> – Executar a acção num determinado conjunto de linhas.
  • search_string – A string que precisa de substituir.
  • replace_string – A nova string que irá substituir a antiga.
  • modifier – Determine o comportamento de substituição. Há um par de valores diferentes.
    • g – opção “Global”. Executar a substituição em cada ocorrência de uma linha.
    • gc – Pedir confirmação antes de fazer cada substituição.
    • gn – Ignorar a função de substituição e realçar os achados.

Por exemplo, vamos substituir todo o “python” por “Python3”.

:%s/python/Python3/g

Simples, certo? Agora, vamos ver o seguinte.

:%s/python/Python3/gc

Há um punhado de acções que pode escolher. Enquanto algumas delas são familiares, outras não o são. Vamos ver o que significam.

  • y – Permitir a realização da alteração.
  • n – Não permitir a realização da alteração.
  • a – Substituir all.
  • q – Sair da tarefa.
  • l – Substituir apenas esta ocorrência. Depois, quit.
  • E (Ctrl + E) – Descer um ecrã
  • Y (Ctrl + Y) – Descer um ecrã

Agora, vamos experimentar a parte do intervalo. No exemplo anterior, já utilizámos a parte da gama “%”. Agora, é tempo de limitar as nossas pesquisas dentro de um certo número de linhas.

:200,250 s/python/Python3/g

A pesquisa começará na linha 200 e terminará na linha 250. Entre os limites, toda a entrada “python” será alterada para “Python3”.

Esta função não está apenas limitada a um termo de pesquisa. É possível incluir vários termos de pesquisa!

:%s/<search_term_1><search_term_2><search_term_3>
/<replace_string>/g

Tentemos mudar todas as entradas “python” e “py” para “Python3”.

:%s/python\|py/Python3/g

Sensibilidade da caixa

Todos os truques descritos anteriormente no guia são altamente sensíveis a maiúsculas e minúsculas. É preciso ter a certeza de que sempre que se está a trabalhar, se está a escrever os caracteres no caso correcto. Por exemplo, “Python”, “python”, “PYTHON” etc., todos são entradas diferentes.

Se não se lembrar do caso, basta dizer a Vim para se tornar insensível a maiúsculas e minúsculas!

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

Esta insensibilidade também pode ser directamente activada a partir do ficheiro vimrc.

set ignorecase

Aqui está outra opção interessante.

set smartcase

A “ignorância” obrigará Vim a ignorar a sensibilidade ao caso. Contudo, se houver alguma letra maiúscula na sua pesquisa, o “smartcase” permitirá a Vim tornar-se novamente sensível ao caso.

Nota: Para que o “smartcase” funcione, precisa primeiro de “ignorecase”.

Pensamentos finais

Há muitas coisas que pode fazer com Vim. É como o editor de texto final que alguma vez precisará. Tudo o que precisa é apenas de paciência e alguma prática.

Desfrute!

Deixe uma resposta

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