我最近已经切换到 zsh,使用robbyrussell 的oh-my-zsh
。在此之前,我使用 bash 进行了很多自定义操作,我只缺少一件事,因为 zsh 试图变得“太聪明”:
如果我输入git commit
,然后↑zsh 会浏览所有最近的git
命令。但我真正想要的是浏览所有以 开头的命令git commit
(不仅仅是git
)。
我怎样才能在 (oh-my-)zsh 中实现这种行为?
答案1
我已经找到了解决问题的方法ZSH 文档。Oh-my-zsh 似乎将↑和↓键映射到类似
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
这产生了我上面描述的确切行为。ZSH 文档将行为描述history-search-backward
为
在历史记录中向后搜索以缓冲区中的第一个字。
我想要的是以下映射,我将其插入到我的~/.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
答案2
oh-my-zsh
我希望 zsh 在安装和找到插件时具有相同的行为history-substring-search
。
我通过将插件添加到我的实现了上面描述的相同行为~/.zshrc
:
plugins=(git brew npm history-substring-search)
我猜这个问题提出的时候这个插件还不存在。这只是实现相同目的的另一种方法。