Quando in modalità javascript, cercando di usare, C-c C-m i
ricevi un errore che dice " C-c RET
non è definito?"
Cosa fa credere ad Emacs che sto premendo RET
?
Come posso far funzionare correttamente questo keybinding?
Quando in modalità javascript, cercando di usare, C-c C-m i
ricevi un errore che dice " C-c RET
non è definito?"
Cosa fa credere ad Emacs che sto premendo RET
?
Come posso far funzionare correttamente questo keybinding?
Risposte:
Emacs "pensa" che C-m
è RET
perché "controllo M" è il carattere di controllo ASCII "ritorno a capo". Anche se questo motivo è "storico", Emacs può funzionare in un terminale e quindi deve supportare il modo in cui i terminali funzionano ancora adesso.
Prova ad aprire una finestra del terminale, digitando " ls
" e premendo C-m
. Vedrete che viene interpretato come "ritorno", anche se si è non in Emacs.
Vedi Carattere di controllo su Wikipedia per dettagli sui caratteri di controllo.
Per distinguere C-m
da RET
in una GUI Emacs, si potrebbe cambiare C-i
a C-m
in @nispio 's risposta :
(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)
Guarda anche
Come distinguere Ci da TAB? , che è strettamente correlato.
Come legare Ci come diverso da TAB? e questa risposta in particolare.
C-m
come prefisso una mappa per più cursori.