Mini-Guia do Emacs

[Vasco Pedro DI/UE v1.0 (26SET06)]

Este documento compreende uma introdução ao uso do editor de texto GNU Emacs e a descrição de alguns dos seus comandos, com as combinações de teclas que os invocam.

Índice

O Emacs

O Emacs é um editor de texto programável, que inclui modos de edição adaptados ao conteúdo do ficheiro que está a ser editado. O conteúdo de um ficheiro é, normalmente, identificado a partir da sua extensão. Existem modos para, por exemplo, código Haskell (extensão .hs), código C (extensão .c) e HTML (extensão .html).

A edição de um ficheiro é feita em três passos: abertura do ficheiro, alteração do seu conteúdo e guarda do novo conteúdo, podendo estes dois últimos passos ser repetidos qualquer número de vezes. Após a abertura do ficheiro, o Emacs associa-lhe uma janela, onde mostra o seu conteúdo. A alteração deste conteúdo consiste em encontrar o sítio onde deve ser inserido texto e/ou de onde deve ser apagado texto, e escrever e/ou apagar o texto pretendido. A localização do ponto onde vai ser inserido ou apagado texto pode ser feita através das teclas com as setas e das teclas PageUp e PageDown, sendo depois o texto escrito ou apagado normalmente. É possível ter vários ficheiros em edição ao mesmo tempo, sendo mostrado no ecrã o conteúdo de um ou mais.

O Emacs só guarda num ficheiro aquilo que for introduzido. Se no fim da última linha do ficheiro não for pressionada a tecla Return, quando o ficheiro for guardado essa linha não estará terminada.

Notação

Na escrita das sequências de teclas que invocam os comandos do Emacs usam-se as notações C-<tecla> e M-<tecla>. A primeira corresponde a pressionar a tecla Control (geralmente situada no canto inferior esquerdo do teclado, por vezes com as letras Ctrl ou Ctl), mantendo-a pressionada enquanto é pressionada <tecla>. A segunda, que se lê Meta-<tecla>, corresponde ao mesmo procedimento, substituindo a tecla Control pela tecla Alt (geralmente situada à esquerda da barra de espaço).

Algumas teclas têm, para o Emacs, nomes especiais, que são introduzidos na tabela seguinte.

Nomes de teclas no Emacs
Nome Tecla
DEL Delete ou Backspace
ESC tecla Escape (ou Esc)
RET Enter ou Return
SPC barra de espaço
TAB Tab, a tecla grande imediatamente acima de Caps Lock
down, up setas para baixo e para cima
left, right setas para a esquerda e para a direita
next, prior PageDown e PageUp

O efeito da combinação M-<tecla> também pode ser obtido pressionando a tecla ESC, libertando-a e pressionando <tecla> de seguida.

Executar e abandonar o Emacs

Para iniciar a execução do Emacs, a partir do interpretador de comandos, pode ser utilizado o comando "emacs" ou o comando "emacs <ficheiro>" (por exemplo: emacs aula1.hs).

Para abandonar o Emacs, o comando é o seguinte.

Teclas Comando Emacs
C-x C-c Abandonar o Emacs.

Comandos do Emacs

Emergências

Por vezes, acontece ser pressionada a combinação de teclas C-z. Esta combinação tem o efeito de suspender a execução do Emacs e de passar o controlo da sessão de trabalho para o interpretador de comandos. Para, caso isto aconteça, retomar a execução do Emacs, deve ser utilizado, no interpretador de comandos, o comando "fg".

Em algumas ocasiões, o pressionar da combinação de teclas C-s diz ao sistema para congelar o conteúdo do ecrã, e deixa de haver resposta visível do sistema às acções do utilizador. Neste caso, a combinação de teclas C-q "descongela" o ecrã e restabelece a interacção normal com o sistema.

Também pode acontecer pressionar uma sequência de teclas que invoca um comando do Emacs diferente do pretendido. O comando seguinte permite interromper a execução de um comando do Emacs e voltar à situação anterior. Este comando poderá ser utilizado sempre que o Emacs se encontra num estado desconhecido, para o repor num estado conhecido.

Teclas Comando Emacs
C-g Interromper a execução de um comando do Emacs.

Tutorial e documentação

A distribuição do Emacs inclui documentação no sistema info. Esta documentação pode ser consultada a partir do próprio Emacs.

Teclas Comando Emacs
C-h t Invocar o tutorial do Emacs. Neste tutorial, o utilizador é guiado ao longo de uma série de acções que lhe permitem familiarizar-se com o funcionamento do Emacs. Vivamente aconselhado.
C-h i Consultar documentação. Permite aceder à documentação info existente no sistema.

Ficheiros

Teclas Comando Emacs
C-x C-f Abrir um ficheiro (novo ou já existente). O nome do ficheiro a abrir será introduzido na última linha do ecrã.
C-x C-s Guardar o ficheiro.
C-x C-w Guardar num novo ficheiro, cujo nome será introduzido na última linha do ecrã.
C-x k Fechar um ficheiro. Pede confirmação do nome do ficheiro a fechar.

Texto

Teclas Comando Emacs
C-_ Desfazer a última alteração. Executado várias vezes em sucessão vai desfazendo as alterações anteriores. Para refazer as alterações desfeitas, pressionar C-g e voltar a pressionar C-_ as vezes necessárias para chegar ao estado desejado.
TAB Alinhar uma linha de texto. Este comando é sensível ao conteúdo do ficheiro em que é executado (desde que a sua extensão seja a apropriada) e tem comportamentos distintos num ficheiro com código Haskell e num com código C, por exemplo.
DEL Apagar o carácter à esquerda da posição corrente.
C-d Apagar o carácter na posição corrente.
M-DEL Apagar a palavra à esquerda da posição corrente. O que constitui uma palavra depende do tipo de ficheiro que está a ser editado.
M-d Apagar a palavra à direita da posição corrente.
M-f Avançar uma palavra.
M-b Recuar uma palavra.
C-a Ir para o início da linha.
C-e Ir para o fim da linha.
C-k Apagar o conteúdo da linha à direita da posição corrente.

Cortar, copiar e colar

Teclas Comando Emacs
C-SPC Marcar o início da região a cortar ou copiar.
M-w Copiar o conteúdo do ficheiro entre a posição corrente e a última marca. Entre a execução do comando anterior e deste, só devem ser executados comandos para alterar a posição corrente, visto que há outros comandos que alteram a posição da marca.
C-w Cortar o conteúdo do ficheiro entre a posição corrente e a última marca. Aplica-se-lhe a observação do comando anterior.
C-y Colar o texto mais recentemente cortado, copiado ou apagado através dos comandos M-DEL, M-d ou C-k.
M-y Colar texto anteriormente cortado, copiado ou apagado através dos comandos M-DEL, M-d ou C-k. Substitui o último texto colado pelo texto que tinha sido cortado, copiado ou apagado antes desse. Só pode ser usado imediatamente a seguir a C-y ou a outro M-y.

Procura de texto

Os comandos seguintes funcionam interactivamente: o Emacs vai procurando o texto pretendido à medida que o utilizador o vai escrevendo, podendo este utilizar a tecla DEL para alterar o texto que procura.

Teclas Comando Emacs
C-s Procurar texto, interactivamente, para a frente, ou seja, que se encontre depois da posição corrente.
C-r Procurar texto, interactivamente, para trás, ou seja, que se encontre antes da posição corrente.

Durante a procura interactiva de texto, os comandos seguintes ficam acessíveis.

Teclas Comando Emacs durante a procura de texto
RET Terminar a procura interactiva de texto.
C-s Encontrar a próxima ocorrência do texto ou inverter o sentido da procura. Se a procura interactiva de texto se estava a efectuar para a frente, localiza a próxima ocorrência do texto procurado ou recomeça a procura desde o início do ficheiro, se já tinha atingido o fim do ficheiro. Se a procura se estava a efectuar para trás, passa a efectuá-la para a frente.
C-r Encontrar a ocorrência anterior do texto ou inverter o sentido da procura. Se a procura interactiva de texto se estava a efectuar para trás, localiza a ocorrência anterior do texto procurado ou recomeça a procura desde o fim do ficheiro, se já tinha atingido o início do ficheiro. Se a procura se estava a efectuar para a frente, passa a efectuá-la para trás.
C-g Interromper a procura interactiva de texto.

Substituição de texto

Teclas Comando Emacs
M-x replace-string Substituir texto. Substitui todas as ocorrências do texto dado, entre a posição corrente e o fim do ficheiro, por outro texto. No início da sua execução, pede ao utilizador que introduza o texto a substituir e a sua substituição.
M-% Substituir texto interactivamente. Difere do comando anterior ao pedir ao utilizador que, para cada ocorrência do texto a substituir, confirme se a deve substituir. Durante a sua execução, a tecla ? permite obter informação sobre as acções possíveis por parte do utilizador.

Janelas

Sendo possível editar vários ficheiros em simultâneo no Emacs, este também permite visualizá-los em simultâneo, dividindo, para isso, o ecrã em várias partes, chamadas janelas, e mostrando o conteúdo de um ficheiro em cada janela.

Na descrições dos comandos que permitem manipular as janelas, a janela corrente é aquela onde o cursor é visível.

Teclas Comando Emacs
C-x 0 Fechar a janela corrente. Fecha a janela corrente, se não for a única. O espaço ocupado pela janela corrente no ecrã passa a pertencer a outra janela, que, assim, aumenta de tamanho.
C-x 1 Fechar as outras janelas. A janela corrente passa a ocupar todo o ecrã.
C-x 2 Dividir a janela corrente horizontalmente. A janela corrente é dividida, horizontalmente, ao meio. As duas janelas resultantes mostram o conteúdo do mesmo ficheiro.
C-x 3 Dividir a janela corrente verticalmente. Faz na vertical o que o comando anterior faz na horizontal.
C-x o Mudar a janela corrente. A nova janela corrente será a que está à direita ou a que está abaixo da janela corrente, ou aquela a que pertence o canto superior esquerdo do ecrã, se não existir nenhuma à direita ou abaixo da corrente.
C-x b Mudar o conteúdo da janela corrente. O nome do ficheiro cujo conteúdo passará a ser mostrado na janela corrente será introduzido na última linha do ecrã. Este ficheiro deverá ter sido previamente aberto, caso contrário deverá ser usado o comando para abrir um ficheiro.
C-x 4 f Abrir um ficheiro noutra janela. Abre um ficheiro (novo ou já existente) e mostra o seu conteúdo numa janela diferente da janela corrente. Se só existir uma janela, divide-a horizontalmente ao meio e mostra o ficheiro aberto na janela de baixo.


Quaisquer comentários, sugestões ou correcções poderão ser enviados para vp (seguido de @di.uevora.pt).