我是tmux的新手,我正在尝试编辑我的tmux.conf文件,让状态栏的左侧反映出来:
[SessionName] [CurrentPane] [CurrentWorkingDirectory]
我可以显示SessionName
和CurrentPane
。但是我无法显示CurrentWorkingDirectory
。
我尝试了几个#(shell command)
选项:
#(tmux select-pane -t :.#P; pwd)
:
但是这会打印一些其他的$ PWD变量,它会反映 NOT
当前窗格中bash会话的当前目录。
#(tmux select-pane -t :.#P; tmux send-keys pwd Enter)
首先,如果我确实打印了CurrentWorkingDirectory
在一个终端。它在终端打印,状态为 NOT
酒吧就像我想要的那样。其次,它每15年进入“pwd Enter”
无论我是否在终端,这是一个麻烦
如果你不那么快(就像我一样),反过来。
我尝试过这些选项,但无济于事,是否有可能做我想做的事情?怎么样?
答案 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。