Zsh
找到 Zsh 完成腳本但未執行
首先,假設我有:
alias foo='path/to/my/program'
在我的 中
.zshrc
,然後我為它創建了一個完成腳本~/.oh-my-zsh/completions/_foo
,在我的文件中:#compdef foo _foo() { echo "hello" } _foo
所以,我希望當我
foo [tab]
從 shell 輸入時,我會看到$foo [tab] hello
但相反我得到了
$ foo [tab]_foo
我按下 後,文本
_foo
才被列印出來tab
。你有解決這個問題的想法嗎?
這是關於 zsh 的一般答案。我不知道哦-我的-zsh。
預設情況下,zsh 在嘗試完成之前擴展別名。這通常是正確的。因此,將完成函式與別名的名稱相關聯僅在您繞過別名時才有效,例如 after
\foo
Tab
。您可以使用 關閉此行為
setopt complete_aliases
。但是對於您沒有明確設置完成的所有別名,您將失去完成。如果你想有一個特殊的情況
foo
,最好的方法是把它變成一個函式。function foo { path/to/my/program "$@" }
這並不能解釋為什麼
_foo
要列印。也許有些 oh-my-zsh 怪異。