Tmux:如何配置tmux以显示状态栏上窗格的当前工作目录?

raj*_*mes 14 configuration tmux

我是tmux的新手,我正在尝试编辑我的tmux.conf文件以使状态栏的左侧反映:

[SessionName] [CurrentPane] [CurrentWorkingDirectory]

我能够显示SessionNameCurrentPane.但是我无法显示CurrentWorkingDirectory.

我尝试了几种#(shell command)选择:

  1. #(tmux select-pane -t :.#P; pwd):但是这会打印一些其他$ PWD变量,它不会反映当前窗格中bash会话的当前目录.

  2. #(tmux select-pane -t :.#P; tmux send-keys pwd Enter) 首先,虽然它打印了CurrentWorkingDirectory如果我在一个终端.它在终端打印,而不是像我想要的那样打印在状态栏中.其次,无论我是否在终点站,它每15秒进入"pwd Enter",如果你的速度不快(就像我一样),这是一个很容易扭转的麻烦.

我尝试过这些选项,但无济于事,是否有可能做我想做的事情?如何?

gos*_*pes 22

有一个变量,它似乎没有在联机帮助页中,但在开发版本中提到.对我来说,它适用于tmux的1.8版本.

set -g status-left "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)

请注意,当您将其置于窗口状态时,它也可以工作.每个窗口状态将提到相应的工作目录.

setw -g window-status-format "#{pane_current_path}".
Run Code Online (Sandbox Code Playgroud)

  • 对于当前窗口,它是“window-status-current-format”,对于每个其他窗口,它是“window-status-format”,至少在 tmux 3.1 中是这样。我还使用 b:pane_current_path 仅具有基本名称而不是整个路径 (2认同)

Chr*_* W. 5

我不确定如何在bash中执行此操作,但在zsh中,有一个在每个命令之前运行的挂钩.在你的.zshrc中:

precmd () {
    tmux set -qg status-left "#S #P $(pwd)"
}
Run Code Online (Sandbox Code Playgroud)

tmux每次运行命令时都会运行该命令.希望这可以帮助.既然bash没有precmd,我不知道怎么做.