私は最近tmux(以前はスクリーンユーザー)を使い始めましたが、1つの小さな問題を除いてそれが好きです。私はtmuxセッションでemacsを使用していますが、(tmuxウィンドウではなく)emacsウィンドウ間を移動するためにShift矢印キーを使用することに慣れています。 tmuxで実行すると、これらのバインディングは完全に機能していないようです(Emacsにまったく登録されていないかのように)。 tmuxを終了してシェルでemacsを実行すると、正常に動作します。
私はiTerm2を使用しており、SSHを介してLinuxシステムに接続し、そこでtmux / emacsを実行しています。 .emacsにShift - 矢印キーバインディングを次のように設定しました。
(global-set-key "\M-[1;2A" 'windmove-up)
(global-set-key "\M-[1;2B" 'windmove-down)
(global-set-key "\M-[1;2C" 'windmove-right)
(global-set-key "\M-[1;2D" 'windmove-left)
tmuxで実行していない場合は、emacsでCqを実行してから、キーシーケンスを押してShift -矢印キーの組み合わせの正しい文字シーケンスであることを確認できます。 tmuxでは、Shift - 矢印キーの入力が表示されないようであるため、これは機能しません(ただし、Cqプロンプトにあります)。
tmuxのキーバインディングを見ると、Shift-矢印キーにバインドされたものは何もないようです。下痢があっても、入力プレフィックスの後にのみ登録されます(私の場合はCoにバインドされています)。
tmuxでShift - 矢印キーを再操作する方法についてのアイデアはありますか?
ベストアンサー1
まず、すべての場所で用語が正しいことを確認してください。
xterm
xterm-256color
- ローカルシェルで実行されるもの(例)iTerm2窓xterm
- LinuxシステムにSSH接続した後のシェルの内容
ローカルで使用するものと同じでなければなりません。iTerm2、SSHがこれをリモート側に渡す必要があるからです(そして重要なのは、リモート側がシェル初期化ファイルの値を盲目的に上書きしないことです)。screen
screen-256color
- シェル内部で実行されるもの(例:)マルチプレクサLinuxシステムでは、常に内部的にTERMを使用する必要が
あります。screen
マルチプレクサ。
xterm
すぐに屋外で1学期を過ごしてください。マルチプレクサ許可するマルチプレクサ変更された矢印キーを認識しますが、xterm-keys
ウィンドウオプションもオンになっていないと渡されません。~/.tmux.conf
Linuxシステムに入れてください。
set-window-option -g xterm-keys on
これでShiftキーの順序を渡す必要があります。Emacs、実行中マルチプレクサ、SSH経由で接続、iTerm2窓。