私は bash でインクリメンタル検索 (Ctl-r/Ctl-s) をよく使用しており、非常に便利だと感じています。
Meta-p (Esc p) は非増分検索を実行することに気付きました。増分検索に相当するものが存在することを考えると、それがどのような目的を果たすのか興味があります。私が見落としている何か秘策があるのでしょうか? コマンド履歴が非常に膨大な場合は、より高速になるのでしょうか?
インクリメンタル検索で得られるのと同じインタラクティブなフィードバックが得られないので、なぜそれを使用するのか疑問に思います。
答え1
他のインターフェースの場合と同じ理由で、Bash 履歴での非増分検索を好む人もいると思います。探しているものが正確にわかっているときに、無関係な一致が流れていくのを見ると、多少気が散るかもしれません。
また、効率性も重要です。最近ではそれほどではありませんが、昔は増分検索を実行すると、はるかに遅くなっていたと思います。
答え2
実は、非増分検索の本当に素晴らしい機能を見つけました。デフォルトでは、Readline は次のようにバインドします。
M-n
にnon-incremental-forward-search-history
M-p
にnon-incremental-reverse-search-history
これらはちょっとダメだと思う。でもReadlineまたデフォルトのバインディングのない、別の非増分検索関数のペアがあります。
history-search-forward
history-search-backward
現在の行の先頭とポイントの間の文字列を履歴内で前方/後方に検索します。
これらは実際にはかなり便利です。私はこれらを および にバインドしM-n
、M-p
デフォルトの非増分関数を置き換えました。
コマンドを入力し始めて、一致する履歴エントリを検索することにした場合は、タップできますEscape p
(実際には Meta キーがないため)。
繰り返しタップすると、さらに前に戻り、Escape n
再び前に戻ります。