Bash
為什麼我不能讓 bash 使用前向增量搜尋?
最近,我瀏覽了幾篇關於如何更有效地使用 bash 的文章,其中提到了我從未嘗試過的組合:Ctrl-S(在提示符中,沒有執行命令)從 Ctrl-R 搜尋其他方式。因為我經常使用 Ctrl-R,所以這很有趣。
但是,我無法在我有權訪問的任何 bash 安裝上啟動它(Mac OS Catalina、Windows 的 Git、Debian 10 over ssh、NixOS over ssh)。由於它們中的大多數都有可能會干擾的各種自定義,我也嘗試過
--noprofile --norc
,但無濟於事。在每種情況下,我當然首先在歷史中選擇一條合適的線,以便有一個“前進”進行搜尋,然後嘗試關鍵和弦,但沒有任何反應。(不僅沒有提示,輸入任何字元只是將它們放入行中而無需搜尋。)同樣使用 Ctrl-R 先查找內容。
文件使它聽起來像是開箱即用。那麼這是什麼一回事?
預設快捷方式
Ctrl``S
與 XOFF 控制流命令的快捷方式衝突。這可以通過例如禁用 XOFF 命令或為 readline 命令使用另一個鍵綁定來測試:stty -ixon # or, bind '"\C-f": forward-search-history'
我不能確定為什麼使用這個快捷方式。至少自30 年前bash 1.11發布以來,它一直是預設設置。但如果我猜的話,我會說,因為這些是emacs
Ctrl``S
鍵綁定,而 emacs 是一個通常可以完全控制終端的應用程序,使用它作為快捷方式可能沒有問題,所以無論是誰將它添加到 bash 可能只是將其用作預設值而無需考慮太多。顯然 readline 應該從 1.03開始關閉 BSD 的 XON/XOFF ,所以大概他們只是沒有註意到它在其他系統上預設不起作用。