Come distinguere Cm da RETURN?


14

Quando in modalità javascript, cercando di usare, C-c C-m iricevi un errore che dice " C-c RETnon è definito?"

Cosa fa credere ad Emacs che sto premendo RET?

Come posso far funzionare correttamente questo keybinding?



1
Stesso problema, punto di ingresso diverso, penso che sarebbe bello tenere entrambe le domande in giro per le persone che provengono da ricerche diverse.
Jordon Biondo,


Risposte:


19

Emacs "pensa" che C-mè RETperché "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-mda RETin una GUI Emacs, si potrebbe cambiare C-ia C-min @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


2
Questo è geniale, grazie. Ora posso avere C-mcome prefisso una mappa per più cursori.
John Wiegley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.