Як відрізнити Cm від RETURN?


14

Коли в режимі JavaScript намагаються використовувати C-c C-m iотримати помилку, кажучи " C-c RETне визначено?"

Що змушує Emacs вважати, що я наполягаю RET?

Як я можу правильно змусити цю клавіатурну роботу?


2
Можливий дублікат Правильно виділити Ctrl + i і Tab
Дрю

1
Та сама проблема, інша точка входу, я думаю, що було б непогано тримати обидва питання для людей, які приїжджають з різних пошуків.
Джордон Біондо


Відповіді:


19

Emacs "думає", що C-mце RETтому, що "Control M" - символ управління ASCII "повернення каретки". Незважаючи на те, що ця причина "історична", Emacs може працювати в терміналі, і тому їй потрібно підтримувати те, як термінали все ще працюють.

Спробуйте відкрити вікно терміналу, набрати " ls" та натиснути C-m. Ви побачите, що це трактується як "повернення", навіть якщо ви не в Emacs.

Детальну інформацію про контрольні символи див. У розділі Керуючий символ у Вікіпедії.

Для того, щоб відрізнити C-mвід RETв GUI Emacs, можна було б змінити , C-iщоб C-mв @nispio «s відповідь :

(define-key input-decode-map [?\C-m] [C-m])

;; now we can do this:

(defun my-command ()
  (interactive)
  (message "C-m is not the same as RET any more!"))

(global-set-key (kbd "<C-m>") #'my-command)

Дивись також


2
Це геніально, дякую. Тепер я можу мати C-mв якості префікса карту для декількох курсорів.
Джон Віглі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.