CmとRETURNを区別する方法は?


14

JavaScriptモードで使用しようとするC-c C-m iと、「C-c RET未定義ですか?」というエラーが表示されます。

Emacsが私に迫っていると信じさせるものは何RETですか?

このキーバインドを適切に機能させるにはどうすればよいですか?



1
同じ問題、異なるエントリポイント、異なる検索から来る人々のために両方の質問を保持しておくといいと思います。
ジョーダンビオンド


回答:


19

Emacs C-mRET、「Control M」がASCII制御文字「carriage return」だからだと考えています。この理由は「歴史的な」ものですが、Emacsはターミナルで実行できるため、ターミナルが現在も機能する方法をサポートする必要があります。

端末ウィンドウを開いて、「ls」と入力し、を押してくださいC-m。Emacs を使用していなくても、「return」として解釈されることがわかります。

制御文字の詳細については、Wikipediaの制御文字を参照してください。

区別するためC-mRETGUIのEmacsで、1は変更される可能性C-iC-m中で@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)

こちらもご覧ください


2
これは素晴らしいです、ありがとう。これでC-m、複数のカーソルのプレフィックスマップとして使用できます。
ジョンウィグリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.