Tmux将窗口重命名为当前目录

时间:2015-04-18 21:54:18

标签: shell tmux

所以我在.zshrc中有这个功能,将当前的tmux窗口重命名为当前目录。

precmd () {
    tmux set-window-option -qg window-status-format "#[fg=colour18 bg=colour18] | #[fg=white, bg=colour18] #I | ${PWD##/*/} #[fg=colour18, bg=colour18] | "
    tmux set-window-option -qg window-status-current-format "#[fg=colour18, bg=blue] | #[fg=white, bg=blue] #I | ${PWD##/*/} #[fg=blue, bg=colour18] | "
}

这很好用,但我想知道为什么相同的代码在我的.tmux.conf

中不起作用
# Status Bar
set-window-option -qg window-status-format "#[fg=colour18 bg=colour18] | #[fg=white, bg=colour18] #I | ${PWD##/*/} #[fg=colour18, bg=colour18] | "

set-window-option -qg window-status-current-format "#[fg=colour18, bg=blue] | #[fg=white, bg=blue] #I | ${PWD##/*/} #[fg=blue, bg=colour18] | "

如果我尝试使用它,我在启动tmux时会出错。 有什么理由吗?我可以使用#{pane_current_path}"获得相同的效果并缩短当前目录的路径吗?

3 个答案:

答案 0 :(得分:2)

我认为它不起作用,因为函数是在tty创建之前执行的。它适用于shell函数,因为你在tmux完全启动后执行它。但是.tmux.conf在tmux启动期间执行。

所以我会把它保存在你的.zshrc中,可能会立即执行该功能。

答案 1 :(得分:1)

恐怕暂时没有简单的方法可以实现这一目标。除了@rednaw所说的,还有另一个重要的因素使它变得不可能。

tmux支持"#(shell-command)"的语法。因此,你可能很想

tmux set-window-option window-status-format "#(echo ${PWD##/*/})"

然而,这条线不会像你期望的那样工作。棘手的是:" PWD"是当前会话而不是当前窗格的PWD。

答案 2 :(得分:0)

尽管shell命令在会话的工作目录中而不是在窗口或窗格中运行,所以您不能使用$PWD,但仍可以使用{{1}从该命令中获取窗格的工作路径。 },然后使用shell命令将其缩短到路径的最后一部分,例如我的tmux配置中有这个:

#{pane_current_path}