阻止 zsh 完成父目錄

阻止 zsh 完成父目錄

我使用 zsh 和 grml 的 zshrc 作為基礎。作為我工作的一部分,我定期存取網路路徑(例如 NFS、AFS。)

如果我寫/a/long/network/path/on/the/other/side/of/the/world 按TAB 兩次,那麼速度會非常慢,因為zsh 開始在/a/ 下搜索,然後/a/ long /a/long/網路等...

同時執行 ls /a/long/network/path/on/the/other/side/of/the/world 會在一秒鐘內返回。所以我想告訴 zsh 不要再猜測我了。 (如果我寫 /usr/src/linuxx/ 然後按 Tab 鍵,它會發現我想要 /usr/src/linux/ ,但這很酷,因為網路對我來說弊大於利)。我只想在最後一個斜杠之後“最後”自動完成。

有時我會使用解決方法 cd 進入目錄,然後使用自動完成功能。當然一定有更好的方法。

我怎樣才能實現這個目標?

答案1

這種行為是透過配置的風格(除了一些有選項的基本原理)。你會想要關閉path-completion

預設情況下,檔案名稱補全會檢查路徑的所有元件,以查看該元件是否有補全。例如,/u/b/z可以完成為/usr/bin/zsh.明確將此樣式設為 false 可抑制/遊標之前的路徑組件的此行為

zstyle ':completion:*' path-completion false

您可能想要打開accept-exact-dirs反而。在path-completion左側開啟和accept-exact-dirs開啟的情況下,如果路徑不存在,zsh 將只嘗試完成除最後一個之外的路徑元件。

zstyle ':completion:*' accept-exact-dirs true

相關內容