Коли в режимі JavaScript намагаються використовувати C-c C-m iотримати помилку, кажучи " C-c RETне визначено?"
Що змушує Emacs вважати, що я наполягаю RET?
Як я можу правильно змусити цю клавіатурну роботу?
Коли в режимі JavaScript намагаються використовувати C-c C-m iотримати помилку, кажучи " C-c RETне визначено?"
Що змушує Emacs вважати, що я наполягаю RET?
Як я можу правильно змусити цю клавіатурну роботу?
Відповіді:
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)
Дивись також
Як відрізнити Ci від TAB? , яка дуже тісно пов'язана.
Як зв'язати Ci на відміну від TAB? і ця відповідь зокрема.
C-mв якості префікса карту для декількох курсорів.