有没有办法设置tmux窗格的名称?然后按名称在脚本中引用该窗格?

时间:2014-10-09 16:39:05

标签: session scripting tmux

我想命名一个tmux窗格,以便稍后在脚本中我可以专门引用该窗格。我对tmux相当新。我有一个.tmux配置,并编写了一个或两个脚本,用一些窗格设置一个窗口,但我确定我并不确切知道它们是如何一起工作的。

大多数情况下,我的脚本都是这样的:

tmux spit-window -h
tmux select-pane -t 0
tmux send-keys "run some command" C-m

...并为下一个窗格重复相同的事情..

但相反,我想做一些像

这样的事情
tmux split-window -h
tmux select-pane -t 0
tmux name-pane "tail of X log"
tmux send-keys "run some command" C-m

然后在我完成该配置之后的另一个脚本中:

tmux selected-named-pane "tail of X log"
tmux send-keys "exit"

当然,我只是遍历我要退出的窗格列表。

有没有办法做这样的事情?

1 个答案:

答案 0 :(得分:1)

NAMES AND TITLES中的man tmux部分讨论了窗格标题。

以下是相关摘录:

  

窗格的标题通常由在窗格内运行的程序设置,不会被tmux修改。

我可以建议使用窗格ID编号,而不是使用窗格名称。 “pane id”是当前tmux会话的唯一编号。它只是一个以“%”为前缀的数字,例如“%5”。

这是您获取当前窗格的窗格ID的方式:tmux display-message -p "#{pane_id}"

通过在某处保存此ID,您可以轻松地在某处将其引用。这是示例代码:

tmux split-window -h
tmux select-pane -t 0

# save a pane id to a shell variable
current_pane_id=$(tmux display-message -p "#{pane_id}")

# now save the shell variable to tmux user option (user options are prefixed with @)
tmux set -g @some_variable_name "$current_pane_id"

稍后,当您想要从另一个脚本引用已保存的窗格时:

# get saved pane id to a shell variable
pane_id="$(tmux show -g @some_variable_name)"

# use -t flag to specify the "target" where the keys are sent
tmux send-keys -t "$pane_id" "exit"