我无法让 zsh 历史记录键绑定按照我想要的方式工作。我希望能够键入sudo,然后使用向上箭头滚动浏览带有前缀 的所有历史命令sudo。
我相信这应该是bindkey "^[[5~" up-line-or-history。我有这个lib/key-bindings.zsh文件,应该找到该文件的来源。我正在使用基本上未修改的oh-my-zsh安装。
我有我认为相同的东西.zshrc,并且虚拟机上的 lib 文件和历史记录按我想要的方式工作。虚拟机正在运行 zsh 4.3.10,而我的另一台机器(不工作的机器)正在运行5.0.0。这是版本问题吗?
请参阅https://github.com/robbyrussell/oh-my-zsh/issues/1720
将其添加到 .zshrc 为我解决了这个问题:
# start typing + [Up-Arrow] - fuzzy find history forward
if [[ "${terminfo[kcuu1]}" != "" ]]; then
autoload -U up-line-or-beginning-search
zle -N up-line-or-beginning-search
bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search
fi
# start typing + [Down-Arrow] - fuzzy find history backward
if [[ "${terminfo[kcud1]}" != "" ]]; then
autoload -U down-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "${terminfo[kcud1]}" down-line-or-beginning-search
fi
Run Code Online (Sandbox Code Playgroud)
我不确定是否从 4.3.10 更改为 5.0.0,但您正在搜索的小部件history-search-backward在最近几个版本中被调用。
另外,一个很好的键绑定是history-incremental-pattern-search-backward您可以输入(在调用该小部件后的特殊提示下)的位置,例如sudo*destdir循环浏览以 开头sudo和结尾的所有命令destdir。