如何在 tmux 的状态行中获取当前工作目录和当前进程?

如何在 tmux 的状态行中获取当前工作目录和当前进程?

我想要两个状态行,第一个状态行显示窗口所在的目录,第二个状态行显示窗口中正在运行的进程。这可能吗?我使用 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

相关内容