tmuxの「選択モード」でキーをカスタマイズする方法はありますか?

tmuxの「選択モード」でキーをカスタマイズする方法はありますか?

~からティモックスマニュアル

      -   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 modeq

コピーモード、コピーモード-vi、ルートとは異なり、このいわゆる「選択モード」にはキータブはありません。では、これは可能ですか?

ベストアンサー1

特に今のようC-cににバインドしたいと思います。Exit modeq

特定のスキーマ(copy-mode*を除く)では、rootキーテーブルとスキーマ固有のキー(質問で引用したものなど)が関連しているように見えますが、キーrootテーブルが最初に適用されます。

つまり、rootキーテーブルをスキーマにあるときに変換するC-cと、スキーマは+qCtrl反応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.confEnter)を再ロードする必要があります。

Ctrl+ c、バインディングは現在のウィンドウがtree-mode-F '#{==:#{pane_mode},tree-mode}')にあるかどうかを検出します。そうqであれば()を送信し、そうでなければそのモードにないときに+の機能を失いたくないので()をsend-keys q送信します。C-csend-keys C-cCtrlc

他のパターンの公式名を知るには、次のようにします。

  1. ウィンドウのシェルでecho "$TMUX_PANE"出力があるとしましょう%0
  2. ウィンドウを目的のモードに設定します。
  3. シェルの他のウィンドウでは、ステップ1の出力がtmux display-message -t %0 -p '#{pane_mode}'どこにあるかを呼び出します。%0

私は、、、、(あなたの質問の文脈で際立っています。脚注*を参照)を確認しview-modeました。他の人もいるかもしれません。tree-modeclient-modebuffer-modeoptions-modeclock-modecopy-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

おすすめ記事