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

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

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

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

РЕДАКТИРОВАТЬ: В случае, если это имеет значение, я использую Ubuntu 12.04 с Emacs 23.3. 1 (который я считаю по умолчанию из репо 12.04).

11
задан 18 February 2013 в 20:52

2 ответа

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

0
ответ дан 18 February 2013 в 20:52

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

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

0
ответ дан 18 February 2013 в 20:52

Другие вопросы по тегам:

Похожие вопросы: