用于自定义完成的关联数组的键/值对的一组错误

时间:2018-07-16 01:33:00

标签: zsh zsh-completion

我正在尝试遵循Make zsh complete arguments from a file,但要使用命令。没关系。

/usr/local/share/zsh/site-functions/_foo中,我有

#compdef foo
aliases=($(a complicated command here printing everything twice))
_describe aliases aliases

单独运行时的命令将显示以下内容:

foo foo bar bar this this that that

这似乎可以创建一个关联数组。当我在echo ${(kv)aliases}命令之前添加_describe aliases aliases并运行/usr/local/share/zsh/site-functions/_foo时,我得到了

foo foo bar bar this this that that

然后我刚做${(k)aliases}

foo bar this that

我并不是真正的描述,所以这对我有用。但是,它不适用于zsh。

我添加了

function foo() { echo $* }
autoload _foo
compdef _foo foo

~/.zshrc,然后在. ~/.zshrc之后键入foo [tab]时得到_foo:2: bad set of key/value pairs for associative array。我尝试更改命令以仅打印所有内容一次。结果相同。我尝试更改命令以为每个foo打印"foo:x "。结果相同。那么我的程序应该如何产生这种效果呢?

1 个答案:

答案 0 :(得分:1)

aliases已经作为包含您所有shell别名的关联数组存在。将该变量称为其他名称。

对于普通数组,别名可能有助于将变量声明为局部变量:

local -a compl_aliases

一组错误的键/值对通常表示在进行关联数组分配时,元素数量为奇数。每个键必须有一个偶数和一个值。