答え1
不可能で、今後も不可能になります。持つ機能要求の拒否の場合、session-base-index
開発者は「これはただ役に立たない機能です。」。
答え2
を言及しているようです。会話グループ索引、これは作成され、接続するtmux
セッションを通知するために使用されません。
で使用されますテンプレートは次のとおりです。list-sessions
:
"#{?session_grouped, (group ,}" \
そして生成されたsession.c
(そして常に0から始まります):
/* Find session group index. */
u_int
session_group_index(struct session_group *sg)
{
struct session_group *sg2;
u_int i;
i = 0;
TAILQ_FOREACH(sg2, &session_groups, entry) {
if (sg == sg2)
return (i);
i++;
}
fatalx("session group not found");
}
ただし、この値はフォーマットされた出力にのみ使用されます。
答え3
長すぎます。
「ソリューション」セクションに進んでください。
分析する
大きいがある誤解ここで。
prefixsスクリーンショットは、デフォルトで次のtmuxコマンドを実行した後に撮影されたものです。
choose-tree -Zs
(シェルでは、tmux choose-tree -Zs
括弧内の数字は何もないセッションIDまたはセッション名に関連付けられます。彼らは単に「行番号」です。現在のリストにあります。たとえば、リストは次のようになります。
(0) + foo: 2 windows (attached)
(1) + bar: 1 windows
ただし、すべての項目を展開すると、次のように見えます。
(0) - foo: 2 windows (attached)
(1) ├─> - 0: [tmux]*Z
(2) │ ├─> 0: man
(3) │ ├─> 1: bash*
(4) │ └─> 2: bash
(5) └─> - 1: bash-
(6) ├─> 0: bash
(7) ├─> 2: bash
(8) ├─> 3: bash
(9) ├─> 4: bash
(M-a) ├─> 5: bash
(M-b) └─> 1: bash*
(M-c) - bar: 1 windows
(M-d) └─> 0: bash*
したがって、これらの「行番号」は偶数ではなく、使用できるキーです。上記のリストの0
合計M-c
(Alt+)のみがセッションcに対応しています。tmuxがセッションを評価する方法はこれらのキーとは無関係です。リクエスト(および拒否)session-base-index
それはあなたの問題を解決しないでしょう。リクエスト回数移動中choose-tree
1から始める方が合理的です。
-K
以下を指定して独自のキーを定義できます。choose-tree
。たとえば、貧しい人々の交代勤務は次のように達成されます。
choose-tree -ZsK '#{e|+:1,#{line}}'
これは以下を提供します。
(1) + foo: 2 windows (attached)
(2) + bar: 1 windows
ただし、これにより最大9行にのみキーが追加されます。私の例を拡張すると、次のようになります。
(1) - foo: 2 windows (attached)
(2) ├─> - 0: [tmux]*Z
(3) │ ├─> 0: man
(4) │ ├─> 1: bash*
(5) │ └─> 2: bash
(6) └─> - 1: bash-
(7) ├─> 0: bash
(8) ├─> 2: bash
(9) ├─> 3: bash
├─> 4: bash
├─> 5: bash
└─> 1: bash*
- bar: 1 windows
└─> 0: bash*
誰もいない場所でお待ちくださいM-a
。M-b
内部にパスワード私はこれを見つけました:
#define WINDOW_TREE_DEFAULT_KEY_FORMAT \ "#{?#{e|<:#{line},10}," \ "#{line}" \ "," \ "#{?#{e|<:#{line},36}," \ "M-#{a:#{e|+:97,#{e|-:#{line},10}}}" \ "," \ "" \ "}" \ "}"
それで私が下した結論はchoose-tree -K
こうです。
#{?#{e|<:#{line},10},#{line},#{?#{e|<:#{line},36},M-#{a:#{e|+:97,#{e|-:#{line},10}}},}}
#{line}
各ビットを ; に変更すると、#{e|+:1,#{line}}
1 ビットずつ直接移動できます。あるいは、適切な場合は、ハードコーディングされた定数を変更して計算数を減らすこともできます。
#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}
解決策
tmux コマンドは次のとおりです。
choose-tree -ZsK '#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}'
tmux内でシェルを呼び出すことでこれをテストできますtmux choose-tree …
。結果が目的の結果である場合は、次の行をprefixs次の行に追加してください.tmux.conf
。
bind-key s choose-tree -ZsK '#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}'
このファイルは、tmuxサーバーの起動時に解析されることに注意してください。すでに実行されているサーバーに影響を与えるには、コマンドをtmuxに渡すか(tmux bind-key s …
tmux内のシェルなど)、変更されたファイル(prefix:source-file ~/.tmux.conf
Enter)を再ロードする必要があります。
結果の例
(1) + foo: 2 windows (attached)
(2) + bar: 1 windows
拡張後:
(1) - foo: 2 windows (attached)
(2) ├─> - 0: [tmux]*Z
(3) │ ├─> 0: man
(4) │ ├─> 1: bash*
(5) │ └─> 2: bash
(6) └─> - 1: bash-
(7) ├─> 0: bash
(8) ├─> 2: bash
(9) ├─> 3: bash
(M-a) ├─> 4: bash
(M-b) ├─> 5: bash
(M-c) └─> 1: bash*
(M-d) - bar: 1 windows
(M-e) └─> 0: bash*
答え4
前述のように、この機能はデフォルトではサポートされていません。
最も簡単な解決策は、dummy
セッションを自動的に作成することです。
.tmux.conf
ファイルに次の行を追加するだけです。
# Start a dummy session to make real sessions start from 1
new-session -d -s dummy
その後、tmuxを起動すると、バックグラウンドで「dummy」というセッションが作成されます。手動で作成された最初のセッションは番号1で指定されます。
名前をdummy
別の名前に変更できます。