anterior | início | próxima

Emacs

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...

Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
anterior | início | próxima