Emacs C-. не работает в терминале

10

Я использую GNU Emacs, обычно как emacs -nw , который запускает версию терминала (в отличие от оконной версии GUI).

Я пишу школьные документы в LaTeX , поэтому я использую flyspell-mode для проверки орфографии в emacs. Это отлично работает в версии GUI, но в терминале я сталкиваюсь с проблемами с нажатием клавиши C-. ( Ctrl - . ). В tty это ничего не делает, и в terminator или gnome-terminal это просто вводит «.».

Что я могу сделать, чтобы сделать то, что он делает в оконной версии (показать орфографические предложения для слова с ошибками)?

EDIT: В случае, если это имеет значение, я использую Ubuntu 12.04 с Emacs 23.3.1 (который, как я полагаю, по умолчанию является репозиторией 12.04).

    
задан cg505 18.02.2013 в 03:04
источник

2 ответа

4

Похоже, что важная часть этого вопроса уже была учтена в комментариях, но для устранения основной причины на случай, если вам интересно, я думаю, ctrl-. не работает в терминале из-за некоторых ограничений терминальных эмуляторов. В стандартном терминале ctrl определяется для отправки кода ASCII ключа, на который вы нажимаете минус 64 (поэтому ctrl-J (74) отправляет новую строку (10), а ctrl-I (73) отправляет вкладку (9), например ). Поскольку код ASCII периода равен 46, вычитание 64 даст -18, что является недопустимым, потому что оно отрицательное, и нет никаких отрицательных кодов ASCII, и поэтому для emacs не требуется получать и понимать.

Когда вы запускаете emacs в оконном режиме, механизм эмулятора терминала обходит, и вместо этого используется более надежная клавиатура X11, которая может обрабатывать более неясные нажатия клавиш (вместо того, чтобы уменьшать каждое нажатие клавиши до одного символа ASCII, программа получает исходный ключ плюс все применимые модификаторы, отдельно). Так что, вероятно, невозможно заставить emacs на основе tty обрабатывать ctrl-. если вы не внесете пользовательские изменения в эмулятор терминала (и, возможно, также emacs).

    
ответ дан Paul 18.05.2013 в 21:17
источник
0

В то время как вышеприведенный ответ дает хорошее объяснение why , он не работает, он действительно не адресует , как , чтобы заставить его работать. Для iTerm2 вы можете решить это с помощью добавление сопоставления клавиш для escape-последовательности . Я предполагаю, что в terminator или gnome-terminal

будет что-то подобное     
ответ дан Chris 26.12.2016 в 20:17