Quando estiver no modo javascript, tentar usar, C-c C-m i
receberá um erro dizendo " C-c RET
está indefinido?"
O que faz o Emacs acreditar que estou pressionando RET
?
Como posso fazer com que essa combinação de teclas funcione corretamente?
Quando estiver no modo javascript, tentar usar, C-c C-m i
receberá um erro dizendo " C-c RET
está indefinido?"
O que faz o Emacs acreditar que estou pressionando RET
?
Como posso fazer com que essa combinação de teclas funcione corretamente?
Respostas:
Emacs "pensa" que C-m
é RET
porque "Control M" é o caractere de controle ASCII "retorno de carro". Mesmo que esse motivo seja "histórico", o Emacs pode ser executado em um terminal e, portanto, precisa oferecer suporte à maneira como os terminais ainda funcionam agora.
Tente abrir uma janela do terminal, digitando " ls
" e pressionando C-m
. Você verá que é interpretado como "retorno", mesmo que você não esteja no Emacs.
Consulte Caractere de controle na Wikipedia para obter detalhes sobre caracteres de controle.
Para distinguir C-m
de RET
um Emacs da GUI, pode-se mudar C-i
para C-m
na resposta do @nispio :
(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)
Veja também
Como distinguir Ci de TAB? , que está intimamente relacionado.
Como vincular Ci como diferente da TAB? e esta resposta em particular.
C-m
como um mapa de prefixos para vários cursores.