自动完成 – 在第3个参数的zsh中自动完成
我有一个
shell脚本,它的用法是:
foo.sh <name> <type> <*.tar.gz> 我想只设置一个完整的第三个参数. 我可以使用zsh的zshcomp来完成这项工作吗? 例如: foo.sh <tab> # display usage foo.sh a b <tab> # show files match with *.tar.gz 我可以遵循类似的剧本吗? 解决方法
要读的东西.
这是一篇讨论Z-Shell Completion System的博客文章. 有关更深入的讨论,请阅读this unix.stackexchange回答. 而且,一如既往,read the man pages!. 编辑:忘记添加:echo $fpath将显示zsh使用的函数路径.在OSX上,我有:/usr/local/share/zsh/4.3.17/functions,(位置可能因您而异),其中包含所有ZSH完成功能.看看_ssh,_ls,_tar等 – 它们都在那里,而且它们都有很多可以学习的漂亮功能. 解决问题:你应该去的方向. 但是你所要求的是可以实现的.有几个步骤. >您需要编写一个z-shell完成函数.它需要位于fpath; zsh用于完成系统功能的函数路径. (如果它是一个小函数,将它放入?/ .zshrc也可以,但不推荐). _arguments "3:<MENU>:<COMPLETION>" <菜单>是菜单说明,如果您启用了菜单说明,则会看到该说明. (这是使用zstyle完成的;阅读手册页或链接页面以获取更多信息). _arguments "3::(Foo Bar)" 当您运行脚本并按下< TAB>时,您可以选择Foo或Bar. _files -g *.tar >显示第一个参数的用法:这是一个没有参数的完成(即参数1).我不确定为什么你只想要完成第三个选项而不是前两个(典型用法说明),所以我不知道如何回答这个问题.如果您的脚本应该像这样使用:script foo bar FILE.tar,您不想也要完成foo和bar参数吗? 完整脚本看起来如下所示: #compdef myscript _arguments "3:tar files:_files -g *.tar" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |