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

Configuration Tmux:如何配置Tmux以在状态栏上显示窗格的当前工作目录?,configuration,tmux,Configuration,Tmux,我是tmux新手,正在尝试编辑tmux.conf文件,以使状态栏的左侧反映: [SessionName][CurrentPane][CurrentWorkingDirectory] 我能够显示SessionName和CurrentPane。但是,我无法显示CurrentWorkingDirectory 我尝试了几个shell命令选项: tmux选择窗格-t:.p;pwd: 但这会打印一些其他$PWD变量,它不会反映 当前窗格中bash会话的当前目录 tmux选择窗格-t:.p;tmux发送键pw

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

[SessionName][CurrentPane][CurrentWorkingDirectory]

我能够显示SessionName和CurrentPane。但是,我无法显示CurrentWorkingDirectory

我尝试了几个shell命令选项:

tmux选择窗格-t:.p;pwd: 但这会打印一些其他$PWD变量,它不会反映 当前窗格中bash会话的当前目录

tmux选择窗格-t:.p;tmux发送键pwd Enter 首先,虽然它确实打印了CurrentWorkingDirectory,如果我 在终点站。它在终端中打印,而不是在状态中打印 就像我想要的那样。第二,它每15分钟进入pwd 无论我是否在候机楼,这对我来说都是一件麻烦事 如果你的速度不如我快,就倒过来


我试过这些方法,但都没有用,能做我想做的吗?怎么做呢?

我不知道如何在bash中做到这一点,但在zsh中,有一个钩子在每个命令之前运行。在.zshrc中:

precmd () {
    tmux set -qg status-left "#S #P $(pwd)"
}

这将在每次运行命令时运行该tmux命令。希望这有帮助。因为bash没有precmd,所以我不知道该怎么做。

有一个变量,它似乎不在手册页中,但在开发版本中提到了。对我来说,它在tmux的1.8版本中起作用

set -g status-left "#{pane_current_path}"
请注意,当您将其置于窗口状态时,它也可以工作。每个窗口状态将提及各自的工作目录

setw -g window-status-format "#{pane_current_path}".

不幸的是,建议的解决方案不适用于1.7版-OpenSuse 12.3的官方版本,但我设法找到了一个解决方案: 在/etc/tmux.conf中:

在这里,T-指示显示当前窗格标题,可以使用一些转义序列设置。要在每个shell命令中执行此操作,请将 在.bashrc中的某个地方:


这在OpenSuse 12.3、tmux 1.7、bash 4.2.53上对我很有效。

谢谢您的帮助。因为我是Linux新手,并开始在bash中学习,所以我不想切换到zsh,除非我真的必须这样做。因此,我更喜欢bash的解决方案,但我确实找到了一种方法,通过使用技巧使bash运行precmd。找到了解决办法。谢谢仅当为meMy创建新窗格时,此操作才会重命名窗格。状态栏太短,因此截断了路径。使用set-g status left length 85来增加tmux 2.1的纵向工作:set option-g status right'{pane_current_path}也可以增加在状态I使用set:set option-g status interval时更新当前目录的间隔1@WillHardwick-史密斯:是不是只有在制作新的窗格时才这样?起初我是这么想的,但经过一些实验后,我意识到这只是在我切换窗格时发生的。然后我意识到这是件好事!对于前景中的窗格,它将显示正在运行的命令,对于背景中的窗格,它将显示目录是的,当然!在[[和]]之前需要空格。测试结束后,我从终端窗口复制了一行,但没有注意到这些空格在显示时消失了。
setw -g window-status-current-format "#T(#I:#W#F)"  
setw -g window-status-format "#T(#I:#W#F)"  
[[ -n "$TMUX" ]] && PROMPT_COMMAND='echo -n -e "\e]2;${PWD/${HOME}/~}\e\\"'