Zsh
獲取zsh不完整使用者
我有一個目錄,其中包含一個名為
src
. 我希望在輸入cd s
並點擊TAB
完成目錄時。相反,zsh
嘗試完成系統上以 a 開頭的所有使用者s
:Completing local directory src/ Completing user saeumair sbrg scan-nix schlosse sdwoods shutdown sis-user smmsp snitch srabhina sshd sterpeni sushid sync
我猜我的罪名
.zshrc
是:zstyle ':completion:*:directory-stack' list-colors '=(#b) \ #([0-9]#)*( *)==95=38;5;12'
我用它來完成
cd
歷史。知道如何在不為使用者完成的情況下保留此功能嗎?
使用者是
cd
命令的有效參數,因此作為完成提供,因為您已cdable_vars
打開該選項。使用此選項,cd foo
可以使用 代替cd ~foo
,它允許foo
是任何可以波浪號擴展的東西,包括使用者名或由設置的目錄名hash -d
(但不是 shell 變數,儘管有選項的名稱)。完成程式碼中沒有選項允許命名目錄但不嘗試完成它們。您可以使用
cd
.unset -f _cd autoload -U _cd functions[_cd_orig]=_cd _cd () { setopt local_options no_cdable_vars _cd_orig $@[@] }
該
cdablevars
選項負責使命名目錄和使用者成為 cd 的有效參數。如果您不使用它,請使用unsetopt cdablevars
.要更改為 cd 完成的內容,您可以使用
tag-order
樣式。例如,首先嘗試僅本地目錄,它將是:zstyle ':completion:*:cd:*' tag-order local-directories
在特定上下文中查看適用標籤的一個方便的快捷鍵是按
Ctrl-X h
而不是tab
。