当我按下gem push <tab>
时,它会显示此错误(无论目录是否包含任何.gem
文件):
_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"
_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"
_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"
我不知道如何解决此问题,Google也无济于事。我的fpath
:
> echo $fpath
/Users/robenkleene/.zsh/completion
/usr/local/share/zsh/site-functions
/usr/local/Cellar/zsh/5.7/share/zsh/functions
我已经尝试通过自制程序卸载并重新安装Ruby,因为上面的“地窖”路径包含一个_gem
文件,我相信它定义了此完成功能,但是没有用。
还有其他想法吗?谢谢!
(此外,如果有人对我在哪里提交错误报告有任何建议,这也将有所帮助,再次感谢!)
答案 0 :(得分:0)
我为这个问题制定了自己的糟糕解决方案,但这总比没有好。
我将_gem
文件从/usr/local/Cellar/zsh/5.7/share/zsh/functions
复制到/Users/robenkleene/.zsh/completion
,然后修改了有问题的行(请注意,这仅是因为我的{{1}中有fpath=(~/.zsh/completion $fpath)
}):
zshrc
因此,我删除了- args+=( '*:gem:_files -g "*.gem(-.)"' )
+ args=( '*:gem:_files -g "*.gem(-.)"' )
。这似乎可行,但是我希望有一个更优雅的解决方案和/或任何有关原因的信息(基于我的Google搜索),我似乎是唯一经历过此过程的人。
答案 1 :(得分:0)
我在运行默认zsh 5.7.1的macOS 10.15.6上。在默认的zsh gem补全中,我发现push
包含在带有远程gem名称的命令列表中-不应,它只包含gem文件的路径:
$ gem push --help
Usage: gem push GEM [options]
我将以下补丁应用于$fpath
中更高文件的副本,现在它对我有用:
--- /usr/share/zsh/5.7.1/functions/_gem
+++ ~/.zsh/completion.d/_gem
@@ -56,7 +56,7 @@
check|cleanup|contents|dependency|list|open|pristine|rdoc|uninstall|unpack|update)
args+=( '(--all --skip)*:installed gem:->gems-local' )
;|
- fetch|install|lock|owner|push|search|yank)
+ fetch|install|lock|owner|search|yank)
args+=( '*:gem:->gems-remote' )
;|
cleanup|uninstall)
我不确定在哪里贡献这个补丁。 ?