有时我会忘记哪个窗格与我正在处理的某个项目相关。当我cd
离开项目目录然后让键盘长时间变冷时,最常发生这种情况。浏览会话列表 ( C-B s
) 没有帮助,因为我正在查找的目录不在显示的工作目录中。
有没有办法找到哪个窗格有一个目录存储在其 shell 的目录堆栈 ( dirs
) 中,而无需手动搜索?也就是说,无需切换到一个窗格,运行dirs
并管道到 grep,然后切换到下一个窗格...清洗/冲洗/重复。
我正在zsh
运行autopushd
。
答案1
您也许可以通过配置 zsh 来
cdr
维护文件中先前目录的列表而不是
dirstack
使用的数组pushd
等来执行某些操作。
来自man zshall
部分记住最近使用过的目录,您安装钩子:
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
并在变量中配置recent-dirs-file
保存列表的文件名。通过使用:
zstyle ':chpwd:*' recent-dirs-file ~/.chpwd-recent-dirs-${TTY##*/} +
您将为每个 tty 获得一个单独的文件。
因此,要搜索目录,请 grep 遍历这些文件,并从匹配的文件名中提取 tty 名称,然后要求 tmux 切换到该 tty。我既不是 zsh 用户,也不是 tmux 用户,所以这只是推测,您可能需要发布新问题(而不是此处的评论)以获取有关如何真正实现这一点的帮助。