Как отличить Cm от RETURN?

14

Когда в режиме javascript пытается использовать, C-c C-m iполучить сообщение об ошибке " C-c RETне определено?"

Что заставляет Emacs верить, что я настаиваю RET?

Как я могу правильно сделать эту работу клавиш?

user3139545
источник
2
Возможный дубликат Правильно различать Ctrl + i и Tab
Дрю
1
Та же проблема, другая точка входа, я думаю, было бы неплохо держать оба вопроса рядом с людьми, приходящими из разных поисков.
Джордон Биондо
1
Возможный дубликат Как связать Ci в отличие от TAB?
Жиль "ТАК - перестань быть злым"

Ответы:

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в качестве префикса карту для нескольких курсоров.
Джон Вигли,