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

时间:2013-05-18 13:25:03

标签: configuration tmux

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

[SessionName] [CurrentPane] [CurrentWorkingDirectory]

我可以显示SessionNameCurrentPane。但是我无法显示CurrentWorkingDirectory

我尝试了几个#(shell command)选项:

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

  2. #(tmux select-pane -t :.#P; tmux send-keys pwd Enter)          首先,如果我确实打印了CurrentWorkingDirectory         在一个终端。它在终端打印,状态为 NOT         酒吧就像我想要的那样。其次,它每15年进入“pwd Enter”         无论我是否在终端,这是一个麻烦         如果你不那么快(就像我一样),反过来。

  3. 我尝试过这些选项,但无济于事,是否有可能做我想做的事情?怎么样?

3 个答案:

答案 0 :(得分:17)

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

set -g status-left "#{pane_current_path}"

请注意,当您将其置于窗口状态时,它也会起作用。每个窗口状态都会提到相应的工作目录。

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:3)

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

setw -g window-status-current-format "#T(#I:#W#F)"  
setw -g window-status-format "#T(#I:#W#F)"  

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

[[ -n "$TMUX" ]] && PROMPT_COMMAND='echo -n -e "\e]2;${PWD/${HOME}/~}\e\\"'  

这适用于OpenSuse 12.3,tmux 1.7,bash 4.2.53。