Используйте точку с запятой в global-set-key для функции в .emacs - PullRequest
5 голосов
/ 25 марта 2012

Я пытаюсь установить [Ctrl] - [;] в качестве привязки клавиш в моем .emacs вот так

(global-set-key "\C-;" 'comment-or-uncomment-region)

однако это не работает, когда я пытаюсь (я не получаю никаких сообщений об ошибках, это просто не имеет никакого эффекта). Это будет работать, хотя, если я попробую нормальный символ (например, установив его на "\ C-p").

Я тоже пробовал

(global-set-key (kbd "C-;") 'comment-or-uncomment-region)

но мне не нравится эта опция, потому что для меня она не работает, когда я запускаю "emacs -nw". Есть мысли о том, как я могу это сделать?

EDIT: Когда я запускаю C-h c C -; in emacs -nw, я получаю вывод:

; runs the command self-insert-command

, что точно так же, как при запуске C-ч c ; в emacs -nw

Так что я считаю, что phils прав, что это конечная проблема, потому что emacs никогда не видит C -; , он видит только ;

Ответы [ 2 ]

4 голосов
/ 25 марта 2012

На самом деле C-; обычно не является чем-то, что ваш терминал может отправить в базовое приложение, такое как Emacs (так что оно работает под GUI, но не в терминале). Но мне интересно: зачем вам такая привязка в любом случае, учитывая, что M-; уже связан с comment-dwim, который комментирует / раскомментирует регион, когда регион выбран, так что он предоставляет расширенный набор comment-or-uncomment-region.

4 голосов
/ 25 марта 2012

Использование (kbd "C-;") абсолютно нормально и правильно.

Я подозреваю, что когда вы набираете C -; при запуске emacs -nw, ваш терминал на самом деле ничего не отправляет в Emacs.

Таким образом, ваша проблема, скорее всего, заключается в том, как заставить ваш терминал отправлять C -; в Emacs (или, как альтернативно, как заставить Emacs распознать последовательность, которая отправлено).

Если вы наберете emacs -Q -nw и наберете Ch c C -; , вы получите "C-; is undefined" message?

Предполагая, что это проблема терминала, вот некоторые связанные вопросы и ответы, которые могут указать вам правильное направление, но это будет зависеть от конкретного терминала, который вы используете.

...