oh-my-zsh 历史完成

Pat*_*ity 54 zsh autocomplete oh-my-zsh command-history

我最近切换到 zsh,使用robbyrussell 的oh-my-zsh. 在此之前,我将 bash 与许多自定义内容一起使用,但我只遗漏了一件事,因为 zsh 试图“太聪明”:

如果我输入git commit然后?zsh 会执行所有最近的git命令。不过,我真正想要的是执行所有以git commit(不仅仅是git)开头的命令。

我怎样才能在 (oh-my-)zsh 中实现这种行为?

Pat*_*ity 77

我在ZSH 文档中找到了我的问题的解决方案。Oh-my-zsh 似乎将??键映射到类似

bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
Run Code Online (Sandbox Code Playgroud)

这产生了我上面描述的确切行为。ZSH 文档描述了history-search-backward作为

在历史记录中向后搜索以缓冲区中第一个单词开头的行。



我想要的是以下映射,我将其插入到我的~/.zshrc:

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
Run Code Online (Sandbox Code Playgroud)

的行为history-beginning-search-backward如下:

在历史记录中向前搜索从当前行到光标的行。这会将光标留在其原始位置。

此外,如果\e[A对向上或向下箭头不起作用,请按下<ctrl-v><KEY (e.g., up arrow)>另一个给出^[OA. 然后你可以使用 this 而不是\e[A. 此处描述了该过程:http: //zshwiki.org/home/zle/bindkeys

  • 谢谢你,谢谢你,谢谢你!!我对此快疯了 (2认同)

小智 14

我希望 zsh 具有相同的行为,并且oh-my-zsh已安装并找到 plugin history-substring-search

通过将插件添加到我的~/.zshrc:

plugins=(git brew npm history-substring-search)

我猜这个插件在提出这个问题时不存在。只是实现相同目的的另一种方法。