Comment distinguer Cm de RETURN?

14

Lorsque vous essayez d'utiliser en mode javascript, C-c C-m iobtenez une erreur indiquant " C-c RETn'est pas défini?"

Qu'est-ce qui fait croire à Emacs que j'insiste RET?

Comment puis-je correctement faire fonctionner ce raccourci clavier?

user3139545
la source
2
Copie possible de Distinguer correctement Ctrl + i et Tab
Drew
1
Même problème, point d'entrée différent, je pense que ce serait bien de garder les deux questions pour les personnes venant de recherches différentes.
Jordon Biondo
1
Méta question pour savoir si cette question est un doublon
Gilles 'SO- arrête d'être méchant'
1
Copie possible de Comment lier Ci comme différent de TAB?
Gilles 'SO- arrête d'être méchant'

Réponses:

19

Emacs "pense" que C-mc'est RETparce que "Control M" est le caractère de contrôle ASCII "retour chariot". Même si cette raison est "historique", Emacs peut fonctionner dans un terminal et doit donc prendre en charge la façon dont les terminaux fonctionnent toujours .

Essayez d'ouvrir une fenêtre de terminal, de taper " ls" et d'appuyer sur C-m. Vous verrez qu'il est interprété comme "retour", même si vous n'êtes pas dans Emacs.

Voir Caractère de contrôle sur Wikipedia pour plus de détails sur les caractères de contrôle.

Pour distinguer C-mde RETdans une interface graphique Emacs, on pourrait changer C-ipour C-men @nispio « s réponse :

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

Voir également

Constantine
la source
2
C'est génial, merci. Maintenant, je peux avoir C-mune carte de préfixe pour plusieurs curseurs.
John Wiegley