![如何在 tmux 的状态行中获取当前工作目录和当前进程?](https://linux22.com/image/191784/%E5%A6%82%E4%BD%95%E5%9C%A8%20tmux%20%E7%9A%84%E7%8A%B6%E6%80%81%E8%A1%8C%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95%E5%92%8C%E5%BD%93%E5%89%8D%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我想要两个状态行,第一个状态行显示窗口所在的目录,第二个状态行显示窗口中正在运行的进程。这可能吗?我使用 bash,但如果更容易进行此配置,我愿意切换到另一个 shell。
如果 tmux 无法做到这一点或者很难配置,我是否可以使用其他工具来为我提供此信息? (基本上我想在终端中打开多个选项卡/窗口,以及目录和进程信息。)
答案1
一个非常好的问题。我可以让它“工作”,但还不足以“可用”,恕我直言。我同意,如果效果足够好,这将是一种很好的格式。我将提供我在这里找到的信息,希望您(或其他人)可以填写剩下的谜题。
从 2019 年 tmux 2.9 开始,可以轻松使用setw -g status 2
.第一行的格式是(一个非常基本的版本):
setw -g status-format[0] '#{W:#{pane_current_path} }' # or ...
setw -g status-format[0] '#{W:#(pwd) }'
第二行是:
setw -g status-format[1] '#{W:#{pane_current_command} }' # or possibly
setw -g status-format[1] '#{W:#W } # if there's no other function changing the window title'
问题是这些根本没有相互对齐,而且我还没有找到通过 tmux 配置指令来做到这一点的方法。可能有一种方法至少可以将顶部和底部结果填充/强制到一定的宽度,以这种方式创建对齐,但我还没有做到这一点。
另请注意,默认情况下,tmux 仅每 15 秒更新一次。您可以使用类似的方法更新此间隔setw -g status-interval 1
。
另请注意,只需预先添加命令即可在 shell 中以交互方式使用任何命令tmux
。