这是记录的行为:
down-line-or-search
向下移动缓冲区中的一行,或者如果已经在最底行,则在历史记录中向前搜索以缓冲区中第一个单词开头的行。
似乎没有一个可以完全满足您需要的小部件,因此您必须自己制作。以下是定义行为类似于的小部件的方法up-line-or-search
,但是使用行的开头(直到光标)而不是第一个单词作为搜索字符串。没有经过真正测试,尤其是在多行输入上。
up-line-or-search-prefix () {
local CURSOR_before_search=$CURSOR
zle up-line-or-search "$LBUFFER"
CURSOR=$CURSOR_before_search
}
zle -N up-line-or-search-prefix
另一种方法是使用history-beginning-search-backward
,但仅在光标位于第一行时调用它。未经测试。
up-line-or-history-beginning-search () {
if [[ -n $PREBUFFER ]]; then
zle up-line-or-history
else
zle history-beginning-search-backward
fi
}
zle -N up-line-or-history-beginning-search