Controle e teclas up / down no terminal para uso pelo emacs

3

É possível usar C-up e C-down ao executar o emacs na janela do terminal (ao iniciar o emacs a partir da linha de comando com o -nw flag)? O que meu terminal deve enviar quando eu pressionar C-up e C-down para essas chaves funcionarem no emacs?

Estou no Mac OSX, usando iterm2 para ssh em um servidor linux remoto, onde inicio a sessão do emacs a partir do bash.

    
por ALiX 06.09.2012 / 06:50

1 resposta

6

Os terminais conhecem caracteres, não chaves, portanto, chaves sem caractere correspondente precisam ser traduzidas em seqüências de escape e de volta.

Você pode escolher qualquer sequência de controle que não cause conflito e que o iterm2 e o Emacs concordem. Infelizmente, essas seqüências de controle não são padronizadas. \e[1;5A e \e[1;5B são escolhas populares (em que \e é um caractere de escape).

O Emacs possui um sistema bastante complexo para traduzir seqüências de escape em chaves. Consulte keymaps de tradução no manual. Use input-decode-map a menos que você tenha uma versão antiga do Emacs que não tenha.

(define-key input-decode-map "\e[1;5A" [C-up])
(define-key input-decode-map "\e[1;5B" [C-down])

Em iterm2, defina as seqüências de teclas correspondentes na guia "Chaves" do seu perfil. Veja Como posso obter o controle + seta para a esquerda para voltar uma palavra no iTerm2? para um guia ilustrado.

Veja também Emacs + paredit sob terminal (Terminal.app, iTerm, iTerm2 ) .

    
por 06.09.2012 / 23:39