Jak odróżnić Cm od RETURN?

14

Gdy w trybie javascript próbujesz użyć C-c C-m i, C-c RETpojawia się komunikat o błędzie „ jest niezdefiniowany?”

Co sprawia, że ​​Emacs uważa, że ​​naciskam RET?

Jak mogę właściwie włączyć to klawiszowanie?

użytkownik3139545
źródło
2
Możliwy duplikat Właściwie rozróżnij Ctrl + i i Tab
Drew
1
Ten sam problem, inny punkt wejścia. Myślę, że fajnie byłoby zachować oba pytania dla osób pochodzących z różnych wyszukiwań.
Jordon Biondo
1
Meta pytanie, czy to pytanie jest duplikatem
Gilles „SO- przestań być zły”
1
Możliwy duplikat Jak powiązać Ci jako inny niż TAB?
Gilles „SO- przestań być zły”

Odpowiedzi:

19

Emacs „myśli”, że C-mto RETdlatego, że „Control M” jest kontrola znaków ASCII „powrót karetki”. Chociaż ten powód jest „historyczny”, Emacs może działać w terminalu, dlatego musi obsługiwać sposób, w jaki terminale nadal działają.

Spróbuj otworzyć okno terminala, wpisując „ ls” i naciskając C-m. Przekonasz się, że to jest interpretowane jako „powrót”, nawet jeśli są nie w Emacsa.

Zobacz Kontrolę na Wikipedii, aby uzyskać szczegółowe informacje na temat kontrolnych postaci.

Aby odróżnić C-mod RETw GUI Emacs, można zmienić C-i, aby C-mw @nispio jest odpowiedź :

(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)

Zobacz też

Konstantyn
źródło
2
To jest wspaniałe, dziękuję. Teraz mogę mieć C-mmapę prefiksu dla wielu kursorów.
John Wiegley,