zsh 中的每个目录历史记录

Aki*_*oss 13 command-history zsh oh-my-zsh

我很高兴使用zsh一段时间了,我对我的历史设置非常满意,它们是:

# Write to history immediately
setopt inc_append_history
# History shared among terminals
setopt share_history
# Save extended info in history
setopt extended_history
# Ignore duplicates
setopt hist_ignoredups
Run Code Online (Sandbox Code Playgroud)

但是经常发生我需要在某些特定目录中使用特定命令的情况。例如,当我在时~/my_project我通常会调用make target1 && ./run1,但是当我在时~/second_project我通常需要make target2 && cat foobar | ./run2.

即:不同的目录,但相似的命令。

所以,我通常会cd ~/my_project输入make然后在历史中向后搜索,直到找到我需要的东西。但是如果碰巧我在 . 工作second_project,在搜索历史时我会发现一些我不需要的命令。

所以,我的问题是:zsh 是否存在插件/设置/某些东西,以便在历史记录中搜索时,首先显示在当前目录中调用的命令?

理想情况下,所有其他匹配的历史命令都将出现在这些命令之后,可选择指定最大优先级元素数。

我会尝试自己写这样的东西,但我仍然不知道如何编写自定义zsh插件,如何处理历史记录等等。

sup*_*er0 8

有一个插件声称可以完全满足您的要求,并根据目录历史插件适当命名:

https://github.com/jimhester/oh-my-zsh/commit/baa187e4b903f39422a84b580e6e617ec3738e09

“每个目录历史记录 - 跟踪每个当前目录和全局的先前命令历史记录,能够在它们之间动态切换,绑定到 ctrl-g。” 他们的维基说。

我自己(还)没有测试过它,但根据评论它应该可以工作。


alf*_*lfC 5

当前版本的 oh-my-zsh 附带了该插件。只需添加per-directory-history到您的插件列表中.zshrc

plugins=(... per-directory-history)
Run Code Online (Sandbox Code Playgroud)