使用 vim 命令進行 Bash 自動完成
在 bash 中,當發出路徑比兩個目錄更深的命令時,路徑的自動補全最近停止工作
vim
(它繼續按預期與其他命令一起工作,例如ls
和cd
)。例如,如果我鍵入
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 complete
或man bash
查找有關complete
命令的部分(它是 bash 內置的,因此記錄在 bash 手冊頁中)。最後一點-上述更改僅影響目前
bash
會話,如果您想在每次登錄後刪除 vim 規則complete -r vim
,請將~/.bashrc
.希望有幫助:)