Esc キーを押すまで Tmux を「プレフィックス モード」のままにしておくことはできますか?

Esc キーを押すまで Tmux を「プレフィックス モード」のままにしておくことはできますか?

Vimのモードと同様に、Tmuxを「プレフィックスモード」(実際は何と呼ぶのでしょうか?)のままにして、Escapeキーを押すまで、次のようなことができるようにしたいと思います。

Prefix h j + +

の代わりに

Prefix h Prefix j Prefix + Prefix +

タイマーや過度なコード演奏を心配する必要がありません。

答え1

私はこれを問題そして、次のような答えが返ってきました。

すべてのキーを再バインドしてswitch-client -Tprefix各コマンド シーケンスの末尾に追加することもできますが、これを自動的に行う方法はありません。

ここでの問題は、コマンドがエラーをスローすると機能しないことですが、次のように回避できます。

はい、エラーはコマンドシーケンスをキャンセルします。run-shellを使用するとこれを回避できます。例:

run "tmux mycmd; tmux switch-client -Tprefix"

しかし、そうするとエラーが表示されなくなる可能性があります。

現在の設定は次のようになります:

bind c new-window \; switch-client -T prefix
bind . command-prompt \; switch-client -T prefix
bind , copy-mode \; switch-client -T prefix

# Vim style splits
bind s split-window -v \; switch-client -T prefix
bind v split-window -h \; switch-client -T prefix

# Double tab to cycle panes
bind C-a select-pane -t :.+ \; switch-client -T prefix

私が収集した情報によると、tmux は異なるバインディングに対して異なるコンテキストを使用します。バインドを使用するコンテキストを指定するには、 を使用します。bind <key> -T <context>プレフィックスはデフォルトです。 を使用してコンテキストを切り替えることができるswitch-client -T <context>ため、各コマンドの後にプレフィックスを再適用します。

この方法の欠点は次のとおりです。

  • すべてのバインディングで明示的に行う必要があります
  • 何かエラーが発生した場合(例えば、実行中のセッションが 1 つしかないときに次のセッションに切り替えようとするなど)は通常モードに戻ります。
  • Esc キーだけでなく、バ​​インドされていないキーでも終了します。

ボーナス!プレフィックスモードを長時間使用する場合に役立つファンキーなインジケータを追加できます。

set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"

関連情報