既存のキーの使用

既存のキーの使用

私の現在のウィンドウのサイズ変更マッピングは次のとおりです。

bind Left resize-pane -L 5
bind Down resize-pane -D 5
bind Up resize-pane -U 5
bind Right resize-pane -R 6

ウィンドウのサイズを変更するには、毎回キーバインディングストロークと矢印キーを入力する必要があります。それは愚かなことです。一種のサイズ変更ウィンドウモードを開始するには、サイズが満足されるまでキー矢印をクリックしてからサイズ変更ウィンドウモードを終了します。

「パンを開始し、矢印キーモードでのみサイズを変更できます」と「このモード終了」のコマンド/キーマッピングは何ですか?

ありがとう

答え1

既存のキーの使用

おそらく設定に何も追加する必要はありません。以下は、ウィンドウのサイズ変更のためのデフォルトのバインディングです(から:list-keys)。

bind-key -r -T prefix M-Up             resize-pane -U 5
bind-key -r -T prefix M-Down           resize-pane -D 5
bind-key -r -T prefix M-Left           resize-pane -L 5
bind-key -r -T prefix M-Right          resize-pane -R 5
bind-key -r -T prefix C-Up             resize-pane -U
bind-key -r -T prefix C-Down           resize-pane -D
bind-key -r -T prefix C-Left           resize-pane -L
bind-key -r -T prefix C-Right          resize-pane -R

この-rオプションはbind-key反復をサポートすることを意味します。プレフィックスの順序を再入力しなくても、サイズ変更が完了するまでC矢印またはM矢印を押し続けることができます。この繰り返しパターンがタイムアウトするまでの時間は、repeat_timeオプションで制御されます(デフォルトは500ms)。

プレフィックスバインディングなし

プレフィックスキーをすべて使用したくない場合は、別のbindテーブルを使用できます。 ~からキーバインディングマニュアルページの一部:

デフォルトでは(-Tなし)、キーは次の場所にバインドされます。プレフィックスキーテーブル。この表は、プレフィックスキーの後に押すキーの例です(例: "c"新しい窓内部にプレフィックステーブルなので、「Cb c」は新しいウィンドウを作成します)。これプレフィックスキーのないキーテーブル: 'c'を次にバインドする新しい窓内部にtable(廃止)は、一般的な「c」が新しいウィンドウを作成することを意味します。 -Nエイリアスです-ティー

ルートテーブルに直接バインドする:

bind-key -n C-Up resize-pane -U 5
bind-key -n C-Down resize-pane -D 5
bind-key -n C-Left resize-pane -L 5
bind-key -n C-Right resize-pane -R 5

コピーモードバインディング

サイズ変更には専用モードを使用することをお勧めします。 tmuxこれらのカスタムモードはサポートされていませんが、すでにサポートされています。コピーモード(デフォルトではプレフィックス入力を使用し、[左クリックを使用します。q)ここで、キーは通常プレフィックスなしで異なるバインディングを持つことができます。残念ながら、このモードでは複数のワードコマンド(パラメータ付きコマンドを含む)バインディングはサポートされていません。tmuxの問題215)。ただし、タスクを実行する前にテストできる解決策があります#{pane_in_mode}。この質問に対するコメントと上記の「プレフィックスバインディングなし」ソリューションに基づいています。

bind-key -n C-Up if-shell -F "#{pane_in_mode}" "resize-pane -U 5" "send-keys C-Up"
bind-key -n C-Down if-shell -F "#{pane_in_mode}" "resize-pane -D 5" "send-keys C-Down"
bind-key -n C-Left if-shell -F "#{pane_in_mode}" "resize-pane -L 5" "send-keys C-Left"
bind-key -n C-Right if-shell -F "#{pane_in_mode}" "resize-pane -R 5" "send-keys C-Right"

答え2

@JigglyNagaの回答を拡張すると、カスタムキータブを定義し、必要に応じて切り替えるか再切り替えできます。キータブでは、プレフィックスなしですべてのキーを使用できます。以下は、私が使用する構成の例です。

bind -T root F4 \
  set prefix None \;\
  set key-table resize \;\
  set status-left '#[bg=#C678DD,fg=#2C323C](resize-#S)' \;\
  set window-status-current-style bg=magenta,fg=black \;\
  set status-style bg=#E06C75 \;\
  refresh-client -S\;\

bind -T resize F4 \
  set -u prefix \;\
  set -u key-table \;\
  set -u status-left \;\
  set -u status-style \;\
  set -u window-status-current-style \;\
  refresh-client -S;

bind-key -r -T resize j resize-pane -D 5
bind-key -r -T resize k resize-pane -U 5
bind-key -r -T resize h resize-pane -L 5
bind-key -r -T resize l resize-pane -R 5


bind-key -r -T resize J select-pane -D
bind-key -r -T resize K select-pane -U
bind-key -r -T resize H select-pane -L
bind-key -r -T resize L select-pane -R

これにより、F4(プレフィックスなし)を押して「サイズ調整」キーテーブルに切り替えることができます。また、このモードのときに簡単に確認できるように、状態の色と名前を調整します。 「サイズ調整」テーブルでは、hjklサイズを変更したりウィンドウ間を移動したりできますShift+HJKL。サイズ変更されたウィンドウに満足したら、F4をもう一度押すと通常のtmuxモードに戻ります。

関連情報