# GNU Emacs

O Emacs é um editor de texto, usado por programadores e usuários que necessitam desenvolver documentos técnicos, em diversos sistemas operacionais. A primeira versão do Emacs foi escrita em 1976 por Richard Stallman.
O Emacs tem sua base em Lisp, especificamente um dialeto de Lisp chamado Emacs Lisp. Este permite que ele se torne configurável ao ponto de se transformar em uma espécie de "canivete suíço" para escritores, analistas e programadores.
Alguns recursos disponíveis no Emacs:
* Realce de sintaxe para várias linguagens
* Aceita configurações para comandos de shell (a EShell)
* Programável em Emacs Lisp

## Histórico

Em 1976, Stallman descreveu o primeiro Emacs ("Editor MACroS"), em 1984, ele trabalhou para o GNU Emacs, para encontrar outra opção para os proprietários do Gosling Emacs. O GNU Emacs foi baseado no Gosling Emacs, e foi substituído por Stallman em Mocklisp Interpretation por um verdadeiro interpretador Lisp que exigia tudo que você escrevia em código. É o primeiro programa GNU a funcionar. O GNU Emacs foi escrito em C e fornece ou Emacs Lisp, também foi aplicado em C, como linguagem de extensão. O verso 13, o primeiro lançamento público, foi lançado em 20 de março de 1985. O primeiro lançamento do GNU Emacs foi lançado no verso 15.34, e foi lançado mais tarde em 1985, pois o primeiro dígito indicando C" 1 "foi descartado. 1.12, como o main nunca pensou em mudar, então o main mudou de "1" para "13. O novo hedge foi feito para permitir. No esquema de numeração, um número com dois elementos significa uma liberação, e desenvolvimento com três elementos.
O GNU Emacs foi posteriormente portado para o sistema operacional Unix. Ele oferecia mais recursos do que o Gosling Emacs, em particular um Lisp completo como sua linguagem de extensão, e logo substituiu o Gosling Emacs como o editor "de fato" do Unix Emacs. Markus Hess explorou uma falha de segurança no subsistema de e-mail do GNU Emacs em sua onda de cracking de 1986, na qual ele ganhou acesso de superusuário a computadores Unix.
Embora os usuários comumente enviassem patches e códigos Elisp para o net.emacs newsgroup, a participação no desenvolvimento do GNU Emacs foi relativamente restrita até 1999, e foi usada como um exemplo do estilo de desenvolvimento "Catedral" em The Cathedral and the Bazaar. Desde então, o projeto adotou uma lista de discussão pública de desenvolvimento e acesso anônimo ao CVS. O desenvolvimento ocorreu em um único tronco CVS até 2008, e hoje utiliza o Git DVCS.

## Usando o Emacs
### Comandos

Para abrir um arquivo diretamente de um shell Unix, basta digitar "emacs [nome do arquivo]". Se o arquivo digitado não existir, um arquivo com esse nome será criado. No entanto, a documentação oficial do Emacs recomenda iniciar o Emacs sem o nome do arquivo para evitar o mau hábito de se carregar uma nova janela do Emacs para cada arquivo que for editar. Para usufruir de todos os recursos disponíveis no Emacs é preferível carregar todos os arquivos no mesmo processo.
No modo normal de edição, o Emacs comporta-se como outros editores de texto: o pressionamento de qualquer caractere alfanumérico insere o caractere correspondente, as setas movimentam o ponto de edição (cursor), backspace deleta o texto, etc. Outros comandos são carregados pelo pressionamento de uma combinação de teclas, pressionando o Ctrl e/ou o Meta/Alt juntamente com uma tecla normal. Todo comando de edição é na verdade uma chamada de uma função no ambiente Emacs Lisp. Até mesmo o pressionamento de uma tecla simples como a para inserir o caracter a envolve a chamada de uma função.
Alguns comandos básicos são mostrados abaixo. A tecla Ctrl é chamada de C e a tecla Alt de M.
| Comando | Atalho de Teclas | Descrição |
| info-emacs-manual | C-h r | Carrega o manual do Emacs. |
| forward-word | M-f | Move para o final da palavra. Se estiver no final da palavra, move ao final da próxima palavra. |
| search-forward | C-s | Procura uma palavra no buffer. |
| undo | C-/ | Desfaz última alteração. Desfaz operações anteriores se pressionada repetidamente. |
| keyboard-quit | C-g | Cancela o comando atual. |
| find-file | C-x C-f | Carrega um arquivo (o nome é solicitado) em um novo buffer de edição. |
| save-buffer | C-x C-s | Salva o buffer atual. |
| write-file | C-x C-w | Salva o buffer atual em um novo arquivo. |
| save-buffers-kill-emacs | C-x C-c | Pergunta se deseja salvar os arquivos abertos e sair do Emacs. |
| set-mark-command | C-[space]/C-@ | Faz uma marca no ponto de edição atual, onde será o início de uma cópia ou recorte. |
| kill-region | C-w | Corta todo o texto entre a marca e o cursor. |
| kill-ring-save | M-w | Copia todo o texto entre a marca e o cursor. |
| yank | C-y | Cola o texto contido na área de transferência do Emacs. |
| kill-buffer | C-x k | Mata o buffer com o nome indicado, ou o buffer atual se nenhum nome é digitado. |
| execute-extended-command | M-x | Executa um comando. |
| dabbrev-expand | M-/ | Auto completa palavra atual. |
Cabe lembrar que alguns comandos como o save-buffer usam múltiplos atalhos de teclas. Essa técnica foi criada para possibilitar que mais comandos sejam acionados por atalhos do que do modo convencional. Por exemplo, para salvar um arquivo deve-se pressionar C-x C-s, isto é, pressionar Ctrl+x simultaneamente, depois enquanto ainda segura somente a tecla Ctrl pressionar s. Outro exemplo é o atalho do manual do Emacs. Para carregar o Manual é preciso pressionar C-h r, isto é, pressionar Ctrl+h simultaneamente e depois de soltar o Ctrl e o h, pressionar a tecla r.
Muitos comandos do Emacs podem ser executados pela barra de menus ou (quando o Emacs é executado em sua interface gráfica) pela barra de botões. No entanto usuários avançados preferem usar os atalhos de teclado para ter acesso mais rápido e mais conveniente depois da memorização das teclas.