从 tmux 2.6 开始,tmux 现在允许每个窗格标题。它们可以通过启用tmux set -g pane-border-status top。当每个窗口运行 10 个以上窗格时,这非常方便。我还设置了标题格式,如下所示,以便我可以重命名它们:
set -g pane-border-format "#{pane_index} #{pane_title}"
# rename prompt
bind . command-prompt -p "(rename-pane)" -I "#T" "select-pane -T '%%'"
Run Code Online (Sandbox Code Playgroud)
我唯一不喜欢的是后备默认值,它默认为计算机的主机名。我更喜欢以下内容:
pane_title由用户设置,则使用 ( #{pane_title})#{pane_current_path})任何一个本身都是简单的:
tmux set -g pane-border-format "#{pane_index} #{pane_title}"tmux set -g pane-border-format "#{pane_index} #{pane_current_path}"tmux 的格式化部分(https://github.com/tmux/tmux/wiki/Formats)显示我可以使用三元条件检查来实现我想要的后备类型,但我很难让它工作所有情况都是因为pane_index,当未设置时,似乎默认为(我的猜测)hostname生成窗格时返回的任何命令。这是我目前拥有的:
tmux set -g pane-border-format "#{pane_index} #{?#{!=:#{pane_title},$(hostname)},#{pane_title},#{pane_current_path}}"
Run Code Online (Sandbox Code Playgroud)
这适用于已由用户显式重命名的窗格,也适用于使用相同主机名生成的窗格。不幸的是,我的工作机器上的主机名随着IP的变化而变化,所以上面的命令看起来太脆弱了。更糟糕的是,出于某种原因,它仅在直接从窗格运行时才有效,而不是放入 tmux 配置中(当然,没有 tmux 前缀)。有没有更好的方法来确定 pane_title 是否未设置?
tmux ×1