我想命名一个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"
当然,我只是遍历我要退出的窗格列表。
有没有办法做这样的事情?
答案 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"