嘿,我試圖讓zsh運行一個git命令,並使用輸出生成自動完成的可能性。使用命令輸出爲zsh生成自動完成命令
我試圖運行的命令是
git log -n 2 --pretty=format:"'%h %an'"
而且這裏是我使用的代碼:
local lines words
lines=(${(f)$(git log -n 2 --pretty=format:"'%h %an'")})
words=${(f)$(_call_program foobar git log -n 2 --pretty=format:"%h")}
echo "Length of lines is " ${#lines[@]} " value is " ${lines}
echo "Length of words is " ${#words[@]} " value is " ${words}
compadd -d lines -a -- words
這並不在所有的工作...它認爲words
是一個單獨的元素,行根本沒有正確打印。
但是,當我嘗試手動設置字符串數組時,它一切正常。
local lines words
lines=('one two' 'three')
words=('one two' 'three')
echo "Length of lines is " ${#lines[@]} " value is " ${lines}
echo "Length of words is " ${#words[@]} " value is " ${words}
compadd -d lines -a -- words
這是'compedd'中的文字'words'而不是''$ words [@]「''嗎? – geekosaur 2011-03-23 07:37:27
@geekosaur是的。 '-a'選項使'compadd'查找指定的數組。而''words [@]「'是一個bash代碼,儘管它可能在zsh中工作,因爲zsh開發者關心與bash的兼容性,理智的zsh開發者只會寫'$ words'而不是那個(它工作正常,不管數組中的符號是什麼)。 – ZyX 2011-03-23 15:57:51