tmux でプレフィックス キーとコマンド キー間のタイムアウトを短縮するにはどうすればよいですか?

tmux でプレフィックス キーとコマンド キー間のタイムアウトを短縮するにはどうすればよいですか?

私の~/.tmux.conf

set -g prefix C-a
unbind C-b
bind C-a send-prefix

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

(コマンドキーをGNOME Teminatorと同じにする)

状況: ウィンドウを水平に 2 つのペインに分割し、Ctrl+a Up矢印でペインに切り替えた後、このペインでシェル履歴コマンドを表示するにはしばらく (2 ~ 3 秒) 待つ必要があります。Upもう一度押すと、シェル履歴コマンドが表示されるのではなく、他のペインに切り替わってしまうためです。これを止めるにはどうすればよいですか?

答え1

上、下、左、右(select-paneバインディング、および の同じキーの Control- および Meta- resize-pane)は、デフォルトで「繰り返し可能な」バインディングです( によって作成されますbind-key -r)。プレフィックス キーと任意の 1 つの繰り返し可能なキーを入力した後、セッション オプションで指定されたミリ秒数(デフォルトは 500 ミリ秒)以内であれば、他の任意の繰り返し可能なキーを入力できます(プレフィックスを再度入力する必要はありませrepeat-timeん)。

repeat-time次のシェル コマンドを使用して、 の現在の値を調べることができます。

tmux show-options -g | grep \^repeat-time     # global
tmux show-options    | grep \^repeat-time     # this session

現在のセッションの繰り返しを無効にする場合は、プレフィックスとコロンを入力して、次のコマンドを入力します。

set-option repeat-time 0

あるいは、適切なゼロ以外の値を見つけることができるかもしれません。 値が本当に 2000 前後 (つまり 2 秒) であれば、 に設定されていると推測します/etc/tmux.conf

すべてのセッションの繰り返しを無効にする(またはタイムアウトを変更する)場合は、次のコマンドでグローバル値を設定します。

set-option -g repeat-time 0

セッションごとに値を設定した場合、そのセッションでグローバル値を有効にする前に、その値を設定解除する必要があります ( )。グローバル値を「永続的に」オフにしたままにしたい場合は、set-option -u repeat-timeでグローバル値を設定するとよいでしょう。.tmux.conf

Up にのみ問題がある場合は、以下なしで再バインドできます-r

bind-key Up select-pane -U

答え2

必要に応じて、特定のキーバインドの繰り返しをオフにすることもできます。たとえば、ペインを切り替えるためのデフォルトのバインドは次のようになります。

bind-key -r Up    select-pane -U
bind-key -r Down  select-pane -D
bind-key -r Left  select-pane -L
bind-key -r Right select-pane -R

旗なしでも再現できます-r

bind-key    Up    select-pane -U
bind-key    Down  select-pane -D
bind-key    Left  select-pane -L
bind-key    Right select-pane -R

個人的には、ペインの切り替えは繰り返しできない方がよいと思います。ウィンドウが多数の小さなペインに分割されている場合は繰り返しが便利ですが、それらのペイン内で実行されているアプリケーション (シェル履歴、vim など) とのキーの衝突 (説明したとおり) が発生する可能性があります。また、私は通常、ウィンドウごとに 2 つ以上のペインを持っていません。しかし、人それぞれです。

関連情報