在目录堆栈中查找具有某个目录的 tmux 窗格

在目录堆栈中查找具有某个目录的 tmux 窗格

有时我会忘记哪个窗格与我正在处理的某个项目相关。当我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 用户,所以这只是推测,您可能需要发布新问题(而不是此处的评论)以获取有关如何真正实现这一点的帮助。

相关内容