当我第一次切换到 ZSH 时,我使用向上箭头键浏览历史记录,它会根据我已经输入的内容过滤历史记录,因此如果我输入mysql
然后向上,我将逐步浏览以 开头的最近命令mysql
。
现在情况已经不同了,现在如果我用完了,它只会执行最近的命令,而不管我已经输入了什么。我该如何重新启用此功能?
我的 .zshrc 非常小,我已经尝试关闭所有选项。
以下是我的 .zshrc 中的内容
plugins=(git command-not-found svn debian screen vi-mode)
source $ZSH/oh-my-zsh.sh
bindkey -v
bindkey "^R" history-incremental-search-backward
export EDITOR="vim"
# history stuff
HISTFILE=~/.zsh-histfile
HISTSIZE=2000
答案1
您已up-line-or-search
绑定到向上箭头。这应该会实现您想要的效果:
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
[编辑]:
上面的命令只使用第一个单词进行搜索。下面的命令将使用整行。参见man zshcontrib
...
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search # Up
bindkey "^[[B" down-line-or-beginning-search # Down
答案2
我强烈建议使用"$terminfo[kcuu1]"
或"$key[Up]"
而不是硬编码的东西,因为"^[[A"
它们可能在任何特定系统上起作用,也可能不起作用。
检查/etc/zsh/zshrc
更多键。以下是在我的系统上显示的内容。我认为这些terminfo
键更有可能被定义。
key=( BackSpace "${terminfo[kbs]}" Home "${terminfo[khome]}" End "${terminfo[kend]}" Insert "${terminfo[kich1]}" Delete "${terminfo[kdch1]}" Up "${terminfo[kcuu1]}" Down "${terminfo[kcud1]}" Left "${terminfo[kcub1]}" Right "${terminfo[kcuf1]}" PageUp "${terminfo[kpp]}" PageDown "${terminfo[knp]}" )