我使用 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