セッション名のtmux文字列補間

セッション名のtmux文字列補間

現在のセッションと同じ名前で新しいセッションを作成し、名前の末尾-2に追加のエントリを追加しようとしています。

bind C new-session -c "#{pane_current_path}" -s "#{session_name}"-2

session_namedテキストの変数名は挿入されず、代わりにその名前でセッションが作成されます。"#{session_name}"-2

私もtmux 2.6を実行しています。

答え1

これはtmux 2.1と2.6で動作します。新しいセッションを分離する必要があります。

bind-key C run-shell 'tmux new-session -d -c "#{pane_current_path}" -s "#{session_name}-2"'

新しいセッションに切り替えるには、switch-clientこのクライアントを「次の」セッションに移動を使用します。

bind-key C run-shell \
 'tmux new-session -d -c "#{pane_current_path}" -s "#{session_name}-2"' \;\
  switch-client -n

読みやすくするために、前のバックスラッシュ;とここでバインディングを3行に分割するために使用されたバックスラッシュを参照してください。

答え2

tmuxまず、これを試みたときにネストされたセッションに関する警告メッセージを受け取り、最初にtmux変数を設定解除しない限り、操作の実行を拒否しました$TMUX。そうしたくありません。だから、バインディングが機能する理由は少し気になります。

あなたはそれがうまくいくと言ったが、間違った名前でセッションを作成しただけです。おそらく次のことを試してみてください。

bind C new-session -c "#{pane_current_path}" -s "$(tmux display-message -p "#S")-2"

このソリューションは、シェルのコマンド代替イディオムを使用しようとします$(..)

関連情報