Índice Anterior Próxima

Emacs

Está gostando da leitura? Está aprendendo? Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!

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


Índice Anterior Próxima