~からティモックスマニュアル
- Choose mode, which allows an item to be chosen from a list. This may be a client, a session or window or pane, or a buffer. This mode is entered with the choose-buffer, choose-client and choose-tree commands.
choose-tree
コマンドを見てみましょう。
The following keys may be used in tree mode:
Key Function
Enter Choose selected item
Up Select previous item
Down Select next item
+ Expand selected item
- Collapse selected item
M-+ Expand all items
M-- Collapse all items
x Kill selected item
X Kill tagged items
< Scroll list of previews left
> Scroll list of previews right
C-s Search by name
m Set the marked pane
M Clear the marked pane
n Repeat last search
t Toggle if item is tagged
T Tag no items
C-t Tag all items
: Run a command for each tagged item
f Enter a format to filter items
H Jump to the starting pane
O Change sort field
r Reverse sort order
v Toggle preview
q Exit mode
特に今のようC-c
ににバインドしたいと思います。Exit mode
q
コピーモード、コピーモード-vi、ルートとは異なり、このいわゆる「選択モード」にはキータブはありません。では、これは可能ですか?
ベストアンサー1
特に今のよう
C-c
ににバインドしたいと思います。Exit mode
q
特定のスキーマ(copy-mode
*を除く)では、root
キーテーブルとスキーマ固有のキー(質問で引用したものなど)が関連しているように見えますが、キーroot
テーブルが最初に適用されます。
つまり、root
キーテーブルをスキーマにあるときに変換するC-c
と、スキーマは+q
にCtrl反応cしたかのように反応しますq。
C-c
条件付きに変換できますq
。これは次のとおりです~/.tmux.conf
。
bind-key -T root C-c if-shell -F '#{==:#{pane_mode},tree-mode}' 'send-keys q' 'send-keys C-c'
このファイルは、tmuxサーバーの起動時に解析されることに注意してください。すでに実行されているサーバーに影響を与えるには、コマンドをtmuxに渡すか(tmux bind-key …
tmux内のシェルなど)、変更されたファイル(prefix:source-file ~/.tmux.conf
Enter)を再ロードする必要があります。
Ctrl+ c、バインディングは現在のウィンドウがtree-mode
(-F '#{==:#{pane_mode},tree-mode}'
)にあるかどうかを検出します。そうq
であれば()を送信し、そうでなければそのモードにないときに+の機能を失いたくないので()をsend-keys q
送信します。C-c
send-keys C-c
Ctrlc
他のパターンの公式名を知るには、次のようにします。
- ウィンドウのシェルで
echo "$TMUX_PANE"
出力があるとしましょう%0
。 - ウィンドウを目的のモードに設定します。
- シェルの他のウィンドウでは、ステップ1の出力が
tmux display-message -t %0 -p '#{pane_mode}'
どこにあるかを呼び出します。%0
私は、、、、(あなたの質問の文脈で際立っています。脚注*を参照)を確認しview-mode
ました。他の人もいるかもしれません。tree-mode
client-mode
buffer-mode
options-mode
clock-mode
copy-mode
複数のパターンを検出するには、いくつかのロジックが必要です。例:
bind-key -T root C-c if-shell -F '#{m/r:(tree|client|buffer)-mode,#{pane_mode}}' 'send-keys q' 'send-keys C-c'
C-c
すべてのモード*に変換するには、q
次の行を使用します。
bind-key -T root C-c if-shell -F '#{pane_in_mode}' 'send-keys q' 'send-keys C-c'
copy-mode
*キーテーブルroot
()には重要ではないようです-T root
。ご存知のように、レプリケーションcopy-mode
モードでは別々のテーブル(または)が使用されます。copy-mode-vi