Почему Ctrl+. не работает, когда я привязываю его к команде в Emacs?

C-. не работает в терминале, когда я привязываю его к команде в Emacs. Я пробовал эту процедуру на gnome-terminal и реальном терминале tty1. Я запускаю Emacs с флагом -nw, затем нажмите C-h k (команда для describe-key), затем нажмите C-.. Emacs получает только . без Ctrl. Как мне заставить эту работу работать в Emacs?

Я связываю ключи с этим процессом:

(define-key c-mode-base-map (kbd "C-.") 'semantic-ia-fast-jump)

или

(define-key c-mode-base-map [(control .)] 'semantic-ia-fast-jump)

Ответ 1

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

Таким образом, ваш терминал, скорее всего, не произведет ничего, кроме ., когда вы нажмете C-. (и если это так, то в основном ваш ответ, если только не существует какой-либо возможности настроить терминал на выполнение иначе).

(Каждый раз, когда вы думаете, что Emacs не работает на каком-либо входе при работе в терминале, вы должны попытаться проверить, действительно ли Emacs получает вход, который вы так думаете.)

Если ваш терминал производит что-то другое, кроме ., обратитесь к следующему Q & Как для получения информации о том, как заставить Emacs распознавать последовательность:

Если вы можете запустить xterm вместо этого, вам, вероятно, повезло, из-за некоторых улучшений, связанных с xterm. Посмотрите на следующее:

Некоторые другие связанные Q & As: