Коли в режимі 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
в якості префікса карту для декількох курсорів.