[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.
Action disabled: register

Welcome to the Slackware Documentation Project

Emacs

O que é o Emacs?

Vi e seus clones são editores bastante poderosos e funcionais. Porém, geralmente, eles não são considerados particularmente extensíveis. Fugindo dessa tendência, o vim é uma variante potente e exitosa do vi, sendo leve e extremamente extensível. No entanto, muitos usuários preferem um editor mais “robusto” e extensível. Por esse motivo, muitas pessoas (incluindo o autor deste capítulo) preferem o Emacs.

O Emacs eleva a extensibilidade a outro patamar. Com exceção do núcleo em C, o restante do Emacs é escrito em uma variante de Lisp, que fica exposta para o usuário quase integralmente, de forma que é possível configurá-la ou estendê-la conforme sua vontade (excelentes tutoriais de Emacs Lisp podem ser encontrados na internet). As pessoas já escreveram todos os tipos de extensões em Emacs Lisp, desde marcadores de sintaxe para uma linguagem obscura até um terminal integrado. De fato, existe até um modo de emulação de vii dentro do Emacs chamado Viper. Ou seja, você consegue até mesmo manter o modo de edição do vii enquanto utiliza todo o poder do Emacs.

Como ocorre com o vi, também há muitas variantes de Emacs (denominadas “emacsen”). No entanto, a mais comumente utilizada (e a única no Slackware) é o GNU Emacs. Quando as pessoas fazem referência direta a “Emacs” , elas querem dizer GNU Emacs na maioria das vezes.

Diferente do vi, por padrão, o Emacs opera mais como um editor tradicional. Isso significa que a maioria dos atalhos de teclado podem ser executados sem alterar modos repetidamente. Você pode abrir um arquivo e começar a digitar, sem ter que aprender o que os modos fazem ou até mesmo esquecer qual você está utilizando no momento.

Começando

O Emacs pode ser inicializado simplesmente executando o comando emacs no terminal. Ao abrir o programa pela primeira vez sem argumentos em um console, você verá algo semelhante à imagem ao lado.

Se você estiver em um sistema X Window, o Emacs pode iniciar em GUI (interface gráfica) em vez de rodar no console. Se for esse o caso e você não quiser uma GUI, você pode invocar o programa com o sinalizador '-nw'. Neste momento, você pode navegar utilizando as setas do teclado. Elementos sublinhados são links que podem ser ativados ao pressionar Enter sobre eles. A documentação do programa é muito boa e pode ajudá-lo caso tenha algum problema. Observe também como são descritas as sequências de teclas, como ’C+H’, que indica pressione h enquanto segura a tecla CTRL. O mesmo ocorre com M-`, que indica segure a tecla Meta (geralmente Alt) e pressione a tecla de acento grave `. Quando a orientação é, por exemplo, Ctrl+X Ctrl+C, isso significa pressione a tecla x enquanto segura a tecla CTRL e, em seguida, pressione a tecla c enquanto ainda mantém a tecla CTRL pressionada. Convenientemente, esse exemplo é um dos comandos mais importantes do Emacs: a ação de fechar.

Como alternativa, se você chamar emacs com um nome de arquivo como argumento, o arquivo será aberto, assim como no vi. Ao fazê-lo, o conteúdo do arquivo em questão será apresentado. Neste momento, você pode navegar pelo documento utilizando as setas tradicionais do teclado e digitar informações à vontade sem nenhum problema.

Digamos que você fez algumas alterações e agora quer salvar o arquivo. A seguinte sequência de teclas fará isso: Ctrl+XCtrl+S. Se você criou um novo arquivo, você será solicitado por isso no “minibuffer”, a linha em branco abaixo da cinza na parte inferior da tela. Digite um nome de arquivo de sua escolha e pressione Enter. Se você não quiser salvar o arquivo, você pode pressionar Ctrl+G, sequência que aborta operações que solicitam uma entrada. Vale destacar que o preenchimento com Tab geralmente está disponível para operações que utilizam o minibuffer.

Caso queria abrir um arquivo novo dentro de uma mesma sessão do Emacs, digite Ctrl+XCtrl+F. Você será solicitado no minibuffer para fornecer um nome de arquivo. O Emacs não se importa se o arquivo existe ou não. Se não existir, um novo buffer será criado para ele (o arquivo será criado ao salvar o buffer com Ctrl+XCtrl+S). Se existir, o arquivo será aberto como o esperado. Todavia, o arquivo antigo ainda estará aberto. Você pode voltar para ele utilizando Ctrl+XCtrl+B, inserindo o nome do arquivo (ou, mais tecnicamente, o nome do buffer) e pressionado Enter.

Como se movimentar

Como o vi, o Emacs também é mais antigo do que as setas do teclado. Apesar disso, como no vi, é possível utilizar as teclas de seta para navegar pelos arquivos. Enquanto as teclas de movimento do vi são mais ergonômicas, as do Emacs são mais “mnemônicas”. Ainda assim, é perfeitamente possível operar de maneira rápida e eficiente utilizando as principais combinações de teclas do Emacs. Eis uma tabela das combinações de teclas básicas de movimento: Movimento de cursor no Emacs

ComandoResultado
Ctrl+FMove o cursor um caractere para a frente (forward)
Ctrl+BMove o cursor um caractere para a trás (backward)
Ctrl+N Move o cursor uma linha para baixo (next)
Ctrl+PMove o cursor uma linha para cima (previous)

Claro, como acontece com o vi, também é possível repetir esses comandos com um argumento numérico. Se você digitar M-1 M-0 Ctrl+P, ou Ctrl+U 10 Ctrl+P, o cursor vai mover dez linhas para cima. Se você digitar M-5 Ctrl+F, ou Ctrl+U 5 Ctrl+F, o cursor vai mover dez linhas para a direita.

Como obter ajuda

O Emacs contém uma vasta quantidade de documentação, a ponto de ser frequentemente chamado de editor “auto-documentado”. Isso acontece porque ele possui mecanismos para fornecer documentação aos usuários durante a utilização. Aqui estão algumas funções úteis que exibem a documentação (todas começam com Ctrl+H):

Acessando a documentação do Emacs

ComandoResultado
Ctrl+H f NOME-DA-FUNÇÃOEnter Mostra documentação para função NOME-DA-FUNÇÃO
Ctrl+H kCtrl+XCtrl+C Mostra documentação para função vinculada às teclasCtrl+XCtrl+C
Ctrl+H tMostra tutorial do Emacs
Ctrl+H ?Mostra todas as funções relacionadas à ajuda

Ctrl+H t é especialmente útil caso queira ou precise praticar o operacional do Emacs.

Chamando funções

Conforme observado anteriormente, o Emacs exporta um grande número de funções para uso interativo. Algumas delas, como as que abrem e salvam arquivos, são mapeadas para atalhos. Outras, como as de movimentação para o começo e o fim das linhas, não o são. Para chamá-las, é preciso executá-las1). Digamos que queremos chamar a função “end-of-line”. Faríamos isto:

M-x end-of-line Enter

E o cursor se moveria para o final da linha, como sugere o nome da função.

Resumo com dicas para Emacs

Embora o Emacs possa ser simples de utilizar, seu escopo amplo pode ser sufocante. Logo abaixo estão alguns comandos úteis do Emacs. Alguns aspectos foram simplificados, principalmente em relação à seleção de texto. Esses conceitos, assim como outros, são descritos no manual do Emacs e em diversos tutoriais on-line. Resumos valiosos também podem ser obtidos a partir de pesquisas na web.

Tabela de dicas para Emacs

ComandoResultado
Ctrl+FMove o cursor um caractere para a frente (forward)
Ctrl+BMove o cursor um caractere para a trás (backward)
Ctrl+N Move o cursor uma linha para baixo (next)
Ctrl+PMove o cursor uma linha para cima (previous)
Ctrl+H 'f NOME-DA-FUNÇÃOEnter Mostra documentação para função NOME-DA-FUNÇÃO
Ctrl+H 'kCtrl+XCtrl+C Mostra documentação para função vinculada às teclasCtrl+XCtrl+C
Ctrl+HTMostra tutorial do Emacs
Ctrl+H ?Mostra todas as funções relacionadas à ajuda
M-`Acessa a Barra de Menu
Ctrl+GCancela a operação atual. Isso é mais útil no minibuffer
M-XNOME-DA-FUNÇÃOEnterChama a função interativa NOME-DA-FUNÇÃO
M-1 M-0 Ctrl+NMove o cursor dez linhas para baixo
Ctrl+U 10 Ctrl+NMove o cursor dez linhas para baixo (mesma coisa que o de cima)
M-x beginning-of-line Move o cursor para o início da linha atual
M-x end-of-line Move o cursor para o fim da linha atual
M-> Move o cursor para o final do buffer
M-< Move o cursor para o começo do buffer
Ctrl+K Remove o texto do cursor até o fim da linha, colocando-o no kill ring
Ctrl+Space Entra no modo de seleção (utilize as teclas de movimentação para selecionar). Pressione Ctrl+Space novamente para sair
Ctrl+W No modo de seleção, exclui a região selecionada e armazena o resultado no kill ring
M-W No modo de seleção, armazena a região selecionada no kill ring
Ctrl+Y “Yanks” puxa o conteudo do kill ring e o coloca no local do cursor
Ctrl+/ Desfaz a ação anterior. Ao contrário da maioria dos outros editores, isso inclui ações anteriores de desfazer
Insert Ativa ou desativa a substituição de caracteres
Ctrl+S asdf Enter Pesquisa adiante a cadeia de caracteres “asdf”. Repita Ctrl+S conforme necessário para procurar itens adiante, ouCtrl+R para pesquisar itens para trás
Ctrl+R asdf Enter Pesquisa para trás a cadeia de caracteres “asdf”. Repita Ctrl+R conforme necessário para procurar itens para trás, ouCtrl+S para pesquisar itens adiante
M-% antigoEnter novo Enter Pesquisa cada instância de “antigo” e solicita a substituição por “novo”. Você pode forçar a substituição de todos os itens digitando! durante a solicitação
Ctrl+X Ctrl+C Encerra o Emacs e solicita o armazenamento de cada buffer não salvo antes de fazer isso
Ctrl+X Ctrl+S Salva o buffer atual no arquivo
Ctrl+X Ctrl+W novo-arquivo.txt Enter Salva o buffer atual no arquivo “new-file.txt”

Navegação

Capítulo anterior: vi

Capítulo seguinte: Networking

Fontes

* Fonte original: http://www.slackbook.org/beta
* Originalmente escrito por Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson. Traduzido para o português brasileiro por Vinicius Moraes (wolper).

1)
N.T.: Atualmente, por padrão, as funções end-of-line e beginning-of-line são mapeadas através das combinações Ctrl+E e Ctrl+A.
 pt-br:slackbook:emacs ()