Jedi Tux

Expressões regulares no Vim – Update 1

Posted in Vim by Fernando Basso on 31 de dezembro de 2011

Expressões Regulares no Vim

Boa parte do que está aqui é uma adapatação do :help usr_27.txt (arquivo de ajuda integrada do Vim).

Básico

Início e fim de linha

 :help 03.9 (Simple search patterns)

Use as opções :set incsearch e :set hlsearch para praticar. Para “resetar as cores”, :nohlsearch. Crie um arquivo com pedaços de texto que torne possível praticar as dicas aqui apresentadas.

O caractere ^ faz correspondência ao início da linha. O caractere $ corresponde ao fim da linha.

Econtra “teste” somente se estiver no final da linha:

 /teste$

Encontra teste somente se estiver no início da linha;

 /^teste

Encontra “teste” somente se ele for a única coisa da linha. Não pode haver espaços nem antes e nem depois de “teste”:

 /^teste$

Qualquer caractere uma vez

O . (ponto) corresponde a qualquer caractere – uma vez.

Corresponde a “abc”, “azc”, “aYz”, “a b”, “a-b”, etc:

 /a.b

Escapar caracteres especiais

Se queremos encontrar literalmente um ponto, devemos escapar o ponto, pois no vim ele é um caractere especial.

Se fizer somente

 /.

vai corresponder a todos os caracteres, até mesmo espaços em branco. Para encontrar somente o ponto literalmente:

    /\.

Escapando o . ele se torna um reles mortal e perde todos os seus superpoderes de caractere especial.

RegExp nível intermediário

:help usr_27.txt

Ignorando maiúsculas e minúsculas

Por padrão, o vim é sensível à caixa da letra. Portanto, “else”, “ELSE”, Else” são palavras diferentes. Para que o vim ignore a caixa da letra (case):

 :set ignorecase

Agora, tanto faz procurar por “else”, “ELSE”, ou “Else”, pois o vim vai tentar encontrar a palavra não importa quais letras nes estejam maiúsculas ou minúsculas.

Para voltar a se importar com o case da letra:

 :set noignorecase

Há também a opção smartcase, que é “ignorecase” por padrão, mas se você realizar a procura com pelo menos uma letra maiúscula o vim detecta e passa a ser sensível ao case automaticamente.

 :set ignorecase smartcase

Para fazer procura sensível à caixa em uma pesquisa apenas, usamos \C (maiúsculo):

 /\Cteste
 /\CTeste

O primeiro só combina com “teste”, todas minúsculas. O segundo só combina com “Teste” com o primeiro “T” maiúsculo.

Para tornar a pesquisa insensível ao case use \c (minúsculo):

 /\cteste

Encontra “teste”, “TESTE”, “teSTE”, etc.

A vantagem de usar \c e \C é que eles ficam no histórico junto com o ‘pattern’ da pesquisa.

NOTA: O uso de \ depende da opção magic. :help ‘magic’.

Offsets de linhas

Quando fazemos uma busca, o cursor para na linha da busca. Se queremos parar duas linhas após o elemento procurado:

 /teste/2

Offset de caracteres

Parar o cursor no último caractere do elemento procurado (e = end):

 /teste/e 

Coloca o cursor 3 caracteres após o último caractere do elemento procurado:

    /teste/e+3

Coloca o cursor no penúltimo caractere do elemento procurado:

 /teste/e-1

Coloca o cursor na segunda no terceiro caractere do elemento buscado (b = beggin):

 /teste/b+2

É b+2 por que b já é o primeiro caractere, então + 2 dá 3.

Estes offsets serão mais úteis quando estudarmos o conteúdo do :help pattern.txt.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: