在vi模式下使用zsh但使用箭头键搜索历史记录


1

当为zsh(bindkey -v)启用vi模式时,无论如何都要按常规模式搜索历史记录,即键入几个字母并按向上/向下箭头键?

我发现这比按下逃跑要快得多,然后?输入几个字母,按回车然后n用来滚动火柴。

此外,似乎vi模式搜索匹配命令中的任何位置,我只想在命令的开头匹配,就像使用箭头键进行常规搜索一样。

Answers:


0

请注意,您在这里讨论不同的搜索方法:

使用/?将搜索存储在历史记录中的整个命令来搜索“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
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.