O vim herdou a base das expressões do vi e estendeu muito seu poder, criando metacaracteres novos e permitindo o uso de ERs na maioria de seus comandos, como endereçamento. Tudo o que você precisa saber sobre ERs no vim está documentado no próprio programa, bastando digitar :help regexp
para ter acesso a essas informações.
A primeira dica é ligar duas opções imbatíveis que são a hlsearch
e incsearch
. A primeira deixa iluminado ("highlight") o texto casado, para termos uma visualização do que nossa ER casou, e a segunda faz o vim ir iluminando e mostrando o texto casado dinamicamente, enquanto você digita a ER! Experimente, é muito bom: :set hls is
.
Além destas, temos opções que modificam a sintaxe dos metacaracteres, são elas: magic
e nomagic
. A primeira é a opção-padrão, e é a que se aconselha usar, não mude. Ao usar a segunda, suas ERs serão tão cheias de escapes que serão imprestáveis em outros programas.
A função de pesquisa é feita pelo comando /
e o ?
e a de substituição pelo :s///
. O detalhe é que a substituição vale apenas para a linha atual onde está o cursor, a não ser que você selecione o texto desejado, ou aplique um endereçamento que dirá ao comando s
em quais linhas fazer a substituição.
Esse endereçamento vem imediatamente após o :
e pode ser números de linha, padrões de texto entre barras, e alguns caracteres representantes de: linha atual (.), última linha ($) e arquivo todo (%).Veja alguns exemplos:
:s/a/b/g troca todos os a por b na linha atual :1,5s/^/#/ comenta as 5 primeiras linhas :.,$s/^/#/ comenta até o final do arquivo :%s/^.// apaga a primeira letra de cada linha :%s/^./\u&/c torna maiúsculo o 1° caractere
Esse último é utilíssimo. Colocando um c
no final de qualquer substituição, o vim mostrará um "prompt" na tela e lhe pedirá uma confirmação antes de fazer qualquer uma das substituições. Você vai respondendo sim ou não e vai vendo o texto ser alterado. Evita substituições cegas e vicia, cuidado! Veja :help :s_flags
para conhecer outros modificadores.
No vim apenas as chaves têm similares não-gulosos. Mas como já vimos que com elas conseguimos emular todos os outros quantificadores, isso não é problema. A sintaxe é simplesmente adicionar um traço como primeiro caractere dentro delas.
meta mnemônico ------------------------------------------ \{-,1} opcional não-guloso \{-} asterisco não-guloso \{-1,} mais não-guloso \{-n,m} chaves não-gulosas
Ele possui também diversos arquivos de sintaxe para vários tipos de arquivo, que é onde são guardadas as regras complicadas que dizem "o quê é válido onde", e fazem os arquivos ficarem coloridos, respeitando a sintaxe da linguagem de programação ou arquivo de registros ou configuração sendo editados.
Adivinha como são feitas essas regras complicadas? Com ERs, é claro! Este é um tópico muito interessante e exige conhecimentos sólidos do assunto. Caso queira dar uma olhada, todos os arquivos de sintaxe estão no subdiretório syntax
e têm a extensão .vim
.
A central vim encontra-se em http://www.vim.org.