web-dev-qa-db-ja.com

emacsで使用するためのターミナルのコントロールキーとアップ/ダウンキー

ターミナルウィンドウでemacsを実行するとき(コマンドラインからC-upフラグを使用してemacsを起動するとき)にC-down-nwを使用することは可能ですか?これらのキーがemacsで機能するために、C-upC-downを押したときに、ターミナルは何を送信する必要がありますか?

私はMacOSXを使用しており、iterm2を使用してリモートLinuxサーバーにSSH接続し、bashからemacsセッションを開始します。

3
ALiX

端末はキーではなく文字を認識しているため、対応する文字がないキーはエスケープシーケンスに変換して戻す必要があります。

競合を引き起こさず、iterm2とEmacsが同意する任意の制御シーケンスを選択できます。残念ながら、これらの制御シーケンスは標準化されていません。 \e[1;5Aおよび\e[1;5Bは人気のある選択肢です(ここで\eはエスケープ文字です)。

Emacsには、エスケープシーケンスをキーに変換するためのかなり複雑なシステムがあります。マニュアルの 翻訳キーマップ を参照してください。使用する input-decode-map古いバージョンのEmacsがない場合を除きます。

(define-key input-decode-map "\e[1;5A" [C-up])
(define-key input-decode-map "\e[1;5B" [C-down])

Iterm2で、プロファイルの[キー]タブで対応するキーシーケンスを設定します。図解ガイドについては、 iTerm2でcontrol +左矢印を使用して1つの単語に戻るにはどうすればよいですか? を参照してください。

Emacs +ターミナル(Terminal.app、iTerm、iTerm2)の下のparedit も参照してください。