与えられた.zshrc構成:
bindkey -v
bindkey "^R" history-incremental-pattern-search-backward
空のプロンプトでfoo<^R>bar
と入力すると、bar
に一致する最新のコマンドが検索されます。
^ Rに既存のプロンプト入力を使用させるにはどうすればよいですか?つまりそのキーシーケンスでfoobar
と一致させたい。
^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
が繰り返されると、現在の検索を繰り返すのではなく、これまでに見つけた行に基づいて検索が行われるためです。)