ターミナルウィンドウでemacsを実行するとき(コマンドラインからC-up
フラグを使用してemacsを起動するとき)にC-down
と-nw
を使用することは可能ですか?これらのキーがemacsで機能するために、C-up
とC-down
を押したときに、ターミナルは何を送信する必要がありますか?
私はMacOSXを使用しており、iterm2を使用してリモートLinuxサーバーにSSH接続し、bashからemacsセッションを開始します。
端末はキーではなく文字を認識しているため、対応する文字がないキーはエスケープシーケンスに変換して戻す必要があります。
競合を引き起こさず、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 も参照してください。