17 de setembro de 2010

Minimal Vim - Localizar e substituir

A busca do Vim é excelente. Ele possui uma das melhores pesquisas incrementais que eu já usei e operar a busca apenas pelo teclado torna tudo ainda mais rápido. Por isso, dessa vez, não vamos usar nenhum plugin externo, apenas comandos nativos.

Antes de começar a ensinar como usar a busca do Vim vamos adicionar algumas configurações importantes ao .vimrc:

set incsearch
set hlsearch

A primeira linha ativa a busca incremental e a segunda ativa o destaque dos resultados da pesquisa, ou seja, todas as ocorrências da busca ficam marcadas com outra cor.

Para iniciar uma busca, no modo normal, pressione / e comece a digitar. Você já pode ver o resultado enquanto digita, afinal essa é uma pesquisa incremental. Para finalizar a busca pressione Enter.

A navegação pelos resultados é feita usando os atalhos n para ir para o próximo resultado e N (shift-n) para ir para o resultado anterior.

Um atalho bastante útil é o *, colocando o cursor sobre uma palavra e pressionando essa tecla no modo normal o Vim procurará ocorrências dessa palavra.

A substituição do Vim é muito poderosa, assim como todo o editor ela é um verdadeiro canivete suiço. Aqui vamos aprender o suficiente para a maioria dos casos, não é muito útil aprender mais meia dúzia de opções que raramente você utilizará, para isso temos ótimas referências espalhadas pela Internet ou até mesmo o help do Vim. Minha intenção nunca foi fazer um guia completo, a série Minimal Vim funciona como um filtro trazendo o mínimo de comandos para a maioria das tarefas, meu objetivo é fazer o Vim caber na sua cabeça.

A substituição no Vim é feita usando o comando s. Vejamos um exemplo com o caso mais usado para substituições:

:%s/original/modificada/gc

Vamos analisar cada parte do comando.

  • % define que a substituição será feita no arquivo todo.
  • s (substitute) é o comando de substituição.
  • /original após a primeira "/" fica o texto original que será substituído.
  • /modificada após a segunda "/" temos o texto que substituirá o original.
  • g (global) define que todas as ocorrências, não apenas a primeira de cada linha, serão substituídas.
  • c (confirm) o Vim perguntará se você deseja substituir cada ocorrência, sem essa opção todas as substituições são feitas automaticamente.


Quando o Vim pede a confirmação de uma substituição várias opções aparecem, são elas: y, n, a, q, l, ^E e ^Y. As mais importantes são:

  • y (yes) confirma a substituição.
  • n (no) pula a ocorrência atual e não substitui.
  • a (all) substitui todas as ocorrências.
  • q (quit) cancela a substituição.


Os comandos são bem intuitivos.

Isso é o essencial de pesquisa e substituição, eu raramente preciso usar algo mais complexo. Se você quiser aprender mais sobre esse assunto eu aconselho o Vimbook, mas use-o apenas como referência ou se você já for um usuário avançado, ler um livro tão grande para começar a usar o editor não é uma boa ideia.


Veja outros posts da série Minimal Vim:


2 comentários:

  1. set ignorecase

    set smartcase "Se começar uma busca em maiúsculo ele habilita o case

    ResponderExcluir
  2. Olá voyeg3r, boas dicas, gostei dessa do smartcase. Obrigado por ajudar a complementar o post :)

    ResponderExcluir