bash/readline 是否可以「清理」終端的完成建議?

bash/readline 是否可以「清理」終端的完成建議?

如果您使用 zsh 並對tab命令、路徑名、選項等進行補全,只要有多個潛在匹配項,建議就會顯示在提示符號下方。
一旦您選擇了建議,zsh 將從終端機中刪除建議列表,如下所示:

在此輸入影像描述

圖片來源

相反,當 bash 提供完成建議時,它會輸出清單並返回到新的提示符號。

在此輸入影像描述

圖片來源
zsh 行為對我來說更可取,因為我從未使用過的建議沒有任何價值,只會在終端機中產生更多「噪音」。
是否可以透過這種方式將 bash/readline 配置為像 zsh 一樣?

答案1

簡而言之:這是可能的,但作為.inputrc綁定很複雜。

長:正如評論中所建議的,你可以在 bash 提示字元和 readline 綁定中執行類似的操作。

保存/恢復遊標將是無效的,因為您能夠可靠地清除螢幕其餘部分的唯一點是按下Enter以完成選擇。

一旦您將控制權傳遞給accept-line,再清除螢幕的其餘部分就為時已晚。可以(但複雜)定義一系列真實且臨時的「鍵綁定」以使 readline 執行多個操作。請參閱範例

但這種方法限制您向 bash 發送字元並向 readline 發出命令。沒有任何 readline 命令執行此操作

printf '\033[J'

清除螢幕的。最接近的是 readline 的內建clear-screen不是你想要什麼)。你的綁定必須做類似的事情

  • beginning-of-line
  • 插入 ” printf '\033[J';
  • end-of-line
  • accept-line

end-of-line可以解決 readline 的一個怪癖。它允許您按Enter 任何地方在線上。如果您的遊標位於該行的中間,則您只會看到輸入的一部分(儘管 bash 會取得整個字串)。

相關內容