嘿,我试图让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