当我在 Windows 上的 msys2 中运行 tmux 内的可执行文件时,窗口名称会给出完整的可执行文件名称,有时会很长。例如,我当前的选项卡名称是:
C:\\Users\\me\\Anaconda3\\python.exe
(是的,那些是双斜线\\
)
虽然我喜欢更新我正在运行的任何内容的功能,但如果这只是 就更好了python
。我的猜测是 tmux 正在尝试解析形式的目录/c/Users/me/Anaconda3/python
(因为cat
just 显示为cat
而不是/usr/bin/cat
),有时这种格式和有时窗口格式的奇怪混合对 tmux 来说效果不佳。
知道如何让 tmuxpython
在 python 运行时仅显示为选项卡名称吗?
答案1
Tmux 支持在选项中替换变量名。您需要操作的两个选项是 window-status-format 和 window-status-current-format。
因此,例如,要使窗口编号后跟当前命令,您通常会在中执行如下操作.tmux.conf
:
setw -g window-status-format "#I > #pane_current_command "
setw -g window-status-current-format "#I > #pane_current_command "
但是我们可以对 pane_current_command 进行正则表达式替换,#{s_string1_string2_:pane_current_command}
它会用 string2 替换出现的 string1。我们将使用贪婪通配符替换反斜杠之前的所有内容.*\\\\
,并将其替换为空。我们还将使用正则表达式或替换 .exe |
。所以我们的最终结果是:
setw -g window-status-format "#I > #{s_.*\\\\|\.exe__:pane_current_command} "
setw -g window-status-current-format "#I > #{s_.*\\\\|\.exe__:pane_current_command} "
现在标签将显示python
为C:\\Users\\me\\Anaconda3\\python.exe