Emacs C-. não está funcionando no terminal

10

Eu uso o GNU Emacs, geralmente como emacs -nw , que lança a versão do terminal (ao contrário da versão GUI em janela).

Eu escrevo papéis da escola em LaTeX , então eu uso flyspell-mode para verificação ortográfica dentro do emacs. Isso funciona bem na versão GUI, mas em um terminal, eu me deparo com problemas com o pressionamento de tecla C-. ( Ctrl - . ). Em um tty, isso não faz nada, e em terminator ou gnome-terminal , isso simplesmente insere um ".".

O que posso fazer para que ele faça o que faz na versão em janela (mostre sugestões de ortografia para uma palavra incorreta)?

EDIT: Caso isso seja importante, estou usando o Ubuntu 12.04 com o Emacs 23.3.1 (que, acredito, é o padrão do 12.04 repo).

    
por cg505 18.02.2013 / 04:04

2 respostas

4

Parece que a parte importante desta questão já foi respondida nos comentários, mas para abordar a causa raiz no caso de você estar curioso, acho que ctrl-. não funciona em um terminal por causa de algumas limitações de emuladores de terminal. Em um terminal padrão, ctrl é definido para enviar o código ASCII da tecla pressionada menos 64 (é por isso que ctrl-J (74) envia nova linha (10) e ctrl-I (73) envia a guia (9), por exemplo ). Como o código ASCII do período é 46, subtrair 64 daria -18, que é inválido porque é negativo e não há códigos ASCII negativos e, portanto, nada para o emacs receber e entender.

Quando você executa o emacs no modo de janela, o emulador de terminal é ignorado e, em vez disso, é utilizado o teclado mais robusto do X11, que pode manipular pressionamentos de tecla mais obscuros (em vez de reduzir cada pressionamento de tecla a um caractere ASCII, o programa recebe a chave original mais todos os modificadores aplicáveis, separadamente). Portanto, é provavelmente impossível fazer com que os emacs baseados no tty manipulem o ctrl-. a menos que você faça modificações personalizadas no seu emulador de terminal (e provavelmente também no emacs).

    
por Paul 18.05.2013 / 23:17
0

Embora a resposta acima forneça uma boa explicação sobre por que ela não funciona, ela realmente não aborda como para que ela funcione. Por iTerm2 você pode resolver isso por adicionando um mapeamento de chave para a seqüência de escape . Eu imagino que haveria algo semelhante em terminator ou gnome-terminal

    
por Chris 26.12.2016 / 21:17