Chamar o emacs de editor de texto é ser superficial, pois editar texto parece ser a coisa menos interessante para fazer neste programa que também lê e-mails, acessa a Internet, faz ftp, entre outros. Mas como nosso interesse aqui é ERs, é isso o que veremos. Contrastando-as com a abundância de funcionalidades, as ERs no emacs são diferentes em alguns aspectos e não têm as chaves!
As ERs são tratadas como strings, então valem as dicas já vistas para lidar com isso. Para complicar, ele usa a notação antiga, em que a maioria dos metacaracteres deve ser escapada para serem especiais.
Então juntando esses dois fatos, precisamos fazer \\[\\(.*\\)\\]
para agrupar o conteúdo de um par de colchetes, o que normalmente seria \[(.*)\]
.
Há vários comandos que trabalham com ERs, sendo re-search-forward
e re-search-backward
os comandos de busca nas linhas adiante e anteriores, respectivamente. Mas melhores do que estes são os comandos similares que procuram enquanto você digita, já sabendo se sua ER está funcionando ou não antes de finalizá-la: isearch-forward-regexp
e isearch-backward-regexp
.
Como um editor de texto serve para alterar texto, temos o comando replace-regexp
que se encarrega de fazer a substituição de padrões:
M-x replace-regexp <enter> \(Gentalha!\) <enter> \& \1 Prrrr! <enter>
Com essa seqüência agrupamos a palavra gentalha! e com o especial \&
que referencia todo o trecho casado e o retrovisor um, que neste caso têm mesmo conteúdo, obtemos a frase clássica que o Seu Madruga ouve após apanhar: "Gentalha! Gentalha! Prrrr!".
O que é realmente diferente de tudo no emacs são suas "classes de sintaxe", que são seus similares para as classes POSIX e um algo mais. A sintaxe para acessar essas classes é \s<identificador>
, em que o identificador pode ser:
ident. nome casa um caractere que... -------------------------------------------------- / charquote escapa o próximo caractere \ escape inicia um escape tipo C ( open abre um bloco ) close fecha de um bloco < comment inicia um comentário > endcomment termina um comentário , quote marca um texto normal " string delimita uma string - whitespace é branco . punct é pontuação w word é parte de uma palavra _ symbol não é parte de palavra
O detalhe é que você mesmo pode alterar o conteúdo dessas classes antes de utilizá-las, dependendo de suas necessidades. O comando describe-syntax
mostra os valores atuais dessas classes, para conferência.
E como era de se esperar \S
(com S maiúsculo) casa exatamente o oposto, sendo \S-
qualquer coisa fora brancos, e assim vai...
Ops, quase me esqueci do mais importante: é GNU emacs...