tmuxでスクロールモードを中断するためにキーを送信する方法は?

tmuxでスクロールモードを中断するためにキーを送信する方法は?

VIM には次のキーマップがあります。

map <F5> :silent !tmux send-keys -t 0:0 C-m "python %" C-m<cr>

F5を押すと、vimはtmuxセッション0、ウィンドウ0で現在のPythonスクリプトを実行します。ただし、ウィンドウ0が現在スクロールしている場合(つまり、Shift-PgUpまたはマウススクロール)、tmuxはコマンドを実行しますが、新しい出力をスクロールしません。

スクロールモードから抜け出すためにtmuxウィンドウにキーをどのように送信しますか? (出力時にスクロールしたい)

ノート:通常、Escキーを押してスクロールモードを終了するのにEscキーを使用する方法を知りませんtmux send-keys。転送しようとしましたが、C-[成功しませんでした。

答え1

ANSI-C引用符(およびその詳細)を使用して、リテラルエスケープ(および改行文字)を送信できます。ここ)、たとえば、次のアドレスにエスケープを送信します0:0

tmux send-keys -t 0:0 $'\e'

マッピングについて私が正しく理解したと仮定すると、次のことができます。

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'"python"$'\n'<CR>

エスケープ文字は常に送信されるため、シェルがエスケープ文字を受け取る問題を解決するには、追加の改行文字を送信できます。

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'$'\n'"python"$'\n'<CR>

関連情報