Bash

使用 vim 命令進行 Bash 自動完成

  • July 29, 2014

在 bash 中,當發出路徑比兩個目錄更深的命令時,路徑的自動補全最近停止工作vim(它繼續按預期與其他命令一起工作,例如lscd)。

例如,如果我鍵入ls .config/btsync/bt然後按 TAB,它會擴展為ls .config/btsync/btsync.conf.

如果我鍵入vim .config/bt然後按 TAB,它會展開為vim .config/btsync/.

但是,如果我鍵入vim .config/btsync/bt然後按 TAB,則什麼也不會發生(我希望它擴展為vim .config/btsync/btsync.conf,如ls上面的範例所示。

以我自己的使用者身份執行和以 su 身份執行時,我遇到了同樣的問題。

我讀了這篇文章,其中提到了舊版本的 bash-completion 的問題,但我正在執行 2.1-5。

更新:經過一些額外的測試,我發現根本問題是 bash只會完成目錄名,而不是文件名。

更新:事實證明這bash-completion是整體原因。請參閱我對已接受答案的第二條評論。

任何有關此行為的潛在原因的建議將不勝感激!

我為你做了更多的研究,這就是我發現的——自動完成的關鍵是bash命令complete。您可以列印使用規則vim

complete -p vim

同樣,您可以使用以下方法刪除這些特定規則:

complete -r vim

此命令將其重置為預設值 - 無需任何額外邏輯即可完成通常的路徑和文件名。這可能就是你想要的。

有關更多資訊,請查看help completeman bash查找有關complete命令的部分(它是 bash 內置的,因此記錄在 bash 手冊頁中)。

最後一點-上述更改僅影響目前bash會話,如果您想在每次登錄後刪除 vim 規則complete -r vim,請將~/.bashrc.

希望有幫助:)

引用自:https://unix.stackexchange.com/questions/146303