给定 .zshrc 配置:
bindkey -v
bindkey "^R" history-incremental-pattern-search-backward
当我foo<^R>bar
在空提示符下键入时,它会搜索最近匹配的命令bar
。
如何让 ^R 使用现有的提示输入?即与我想要匹配的键序列foobar
。
答案1
如果您绑定^R
到history-beginning-search-backward
,它会很接近,但这不是模式搜索。
您可以绑定^R
到一个函数,该函数将行的当前内容添加为初始搜索模式。
history-incremental-pattern-search-backward-from-line () {
zle history-incremental-pattern-search-backward $BUFFER
}
zle -N history-incremental-pattern-search-backward-from-line
bindkey -M viins "^R" history-incremental-pattern-search-backward-from-line
bindkey -M vicmd "^R" history-incremental-pattern-search-backward-from-line
bindkey -M isearch "^R" history-incremental-pattern-search-backward
(您需要绑定到isearch
地图,否则重复^R
搜索将基于您迄今为止找到的行,而不是重复当前搜索。)