这是我的完成功能:
f()
{
reply=('ok')
}
compctl -K f c
然后我做
c
标签
c ok
有些东西有效。然后我在b
c ok "a b"
没有任何反应。我希望将a b
替换为ok
(就像在bash中一样)。
我怎么能实现它?
我真的需要在引号内做完成。我的程序的典型启动如下所示:c 'a, &b, c[d]' 'a < 1 and b == "2013"'
答案 0 :(得分:0)
这与引号的使用无关。在第二种情况下,zsh不提供ok
作为完成,因为它不会接近已为该参数输入的内容。 c a
之后也不会提供完成。
zsh通常假定要完成的内容与已经输入的内容有些相关,从而使完成函数的作者无需检查匹配。您可以在compctl命令中添加-U
选项,告诉它应该使用整个$reply
列表,甚至是不匹配的条目。
我还应该注意compctl属于旧的zsh完成系统。新的完成系统在zshcompsys manpage
中描述