会话名称的 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"

此解决方案尝试使用 shell 的命令替换习惯用法$(..)

相关内容