![readline:非增量搜尋是否提供了增量搜尋所沒有的功能?](https://rvso.com/image/109250/readline%EF%BC%9A%E9%9D%9E%E5%A2%9E%E9%87%8F%E6%90%9C%E5%B0%8B%E6%98%AF%E5%90%A6%E6%8F%90%E4%BE%9B%E4%BA%86%E5%A2%9E%E9%87%8F%E6%90%9C%E5%B0%8B%E6%89%80%E6%B2%92%E6%9C%89%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%9F.png)
我在 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
這些有點糟糕,恕我直言。但閱讀線也有另一對非增量搜尋函數,沒有預設綁定:
history-search-forward
history-search-backward
在歷史記錄中向前/向後搜尋目前行開頭和該點之間的字串。
這些實際上非常有用。我已將它們綁定到M-n
和M-p
,替換預設的非增量函數。
如果我開始輸入命令並決定搜尋匹配的歷史記錄條目,我可以點擊Escape p
(因為我實際上沒有元鍵)。
重複點擊可向後循環並Escape n
再次向前循環。