web-dev-qa-db-ja.com

を入力します。 (ドット)zsh増分履歴検索をキャンセルします

履歴検索 Ctrl+R ドット.文字を入力すると、zshでキャンセルされます。

ヒットした場合 Ctrl+Rbck-i-search:プロンプトが表示され、入力した単語に従って履歴が検索されます。しかし、.と入力するとすぐに検索がキャンセルされ、最後に見つかった結果がプロンプトに表示され、カーソル位置に.が表示されます。

foo@bar ~ vi footnote.txt
bck-i-search: foo

そして、私が入るとすぐに . 文字これは結果です:

foo@bar ~ vi .footnote.txt

ドット文字を検索文字列の一部にすることはできますか?

「oh-my-zsh」でzshを使用しています。

編集:

.zshrcを1行ずつ調べた後、この動作の理由を検出しました。

## Quick ../../..
rationalise-dot() {
    if [[ $LBUFFER = *.. ]]; then
        LBUFFER+=/..
    else
        LBUFFER+=.
    fi
}
zle -N rationalise-dot
bindkey . rationalise-dot

この関数は、一連の...../..に自動的に変更するために使用されます。

この機能を維持したいのですが、検索文字列で.を許可します。

1
leviathan

デフォルトでは、.は通常の文字です。このように動作する場合は、構成内の何か、おそらくoh-my-zsh内に埋め込まれている何かが原因です。

メインキーマップのバインディングは、インクリメンタルサーチ中であっても文字の動作をオーバーライドします。インクリメンタルサーチ中にキャラクターの通常の動作を復元するには、キャラクターをself-insertに明示的にバインドする必要があります。

bindkey -M isearch . self-insert