【问题标题】:bad set of key/value pairs for associative array for custom completion用于自定义完成的关联数组的键/值对组错误
【发布时间】:2018-07-16 01:33:00
【问题描述】:

我正在尝试关注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

这似乎创建了一个关联数组就好了。当我在_describe aliases aliases 命令之前添加echo ${(kv)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 "。结果相同。那么我的程序应该产生什么才能让它工作呢?

【问题讨论】:

    标签: zsh zsh-completion


    【解决方案1】:

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

    对于普通数组,将变量声明为本地变量可能会有所帮助:

    local -a compl_aliases
    

    错误的键/值对集合通常表明在进行关联数组赋值时有奇数个元素。每个键都需要有一个偶数和一个值。

    【讨论】:

    猜你喜欢
    • 2013-01-28
    • 2014-09-19
    • 1970-01-01
    • 2017-11-15
    • 2019-11-30
    • 2019-01-18
    • 2011-02-24
    • 2017-09-01
    • 2013-01-02
    相关资源
    最近更新 更多