Answers:
请注意,您在这里讨论不同的搜索方法:
使用/或?将搜索存储在历史记录中的整个命令来搜索“vi way” 。
您希望向上和向下箭头键执行的操作有所不同:您希望它们遍历存储在历史记录中的项目(在开始时)与您在命令行中键入的内容相匹配。
没有太多细节,以下应该是一个相当万无一失的实现方法:
autoload -Uz history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey -M vicmd '^[[A' history-beginning-search-backward-end \
'^[OA' history-beginning-search-backward-end \
'^[[B' history-beginning-search-forward-end \
'^[OB' history-beginning-search-forward-end
bindkey -M viins '^[[A' history-beginning-search-backward-end \
'^[OA' history-beginning-search-backward-end \
'^[[B' history-beginning-search-forward-end \
'^[OB' history-beginning-search-forward-end