oh-my-zsh历史记录完成


45

我最近使用robbyrussell的软件oh-my-zsh切换到zsh 。在此之前,我在bash中使用了许多自定义内容,而我只想念一件事,因为zsh试图变得“太聪明”:

如果我键入git commit,然后zsh会经历所有最近的git命令。我真正想要的是遍历所有以git commit(而不是git)开头的命令。

如何在(oh-my-)zsh中实现此行为?


奇怪,我使用OMZSH,它的行为确实像这样。您的zshrc中是否有“ plugins =(git)”?
Chris2048

是的,我愿意,但不仅是git,所有命令都是以这种方式完成的。
Patrick Oscity 2012年

在Ubuntu上,请参阅superuser.com/a/1490192/131522
mixel

Answers:


66

我已经在ZSH文档中找到了解决问题的方法。哦,我的zsh似乎将键映射到类似

bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward

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

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



我想要的是下面的映射,我将其插入了我的~/.zshrc

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward

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

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

另外,如果\e[A向上或向下箭头不起作用,请按<ctrl-v><KEY (e.g., up arrow)>另一个显示的终端^[OA。然后,您可以使用它代替\e[A。该过程在此处进行了描述:http: //zshwiki.org/home/zle/bindkeys


1
谢谢你,谢谢你,谢谢你!!我正在为此
烦恼

对于像我这样的非OMZ用户:bindkey由于存在错误,实际上并没有做任何事情,因此OMZ团队使用此插件对其进行了修补。只需下载并在之前获取它即可bindkey
富兰克林于

@FranklinYu,您确实知道总的b,对不对?该插件对bindkey不做任何事情,只是使用它来捕获一些事件。
nonchip

哇,这太完美了!
松鼠

12

我希望oh-my-zsh安装和找到插件的zsh具有相同的行为history-substring-search

通过将插件添加到我,实现了上述相同的行为~/.zshrc

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.