【问题标题】:Accessing command's argument in auto-completion function in zsh在 zsh 的自动完成功能中访问命令的参数
【发布时间】:2013-10-13 21:33:36
【问题描述】:

我希望创建一个自定义命令,它的第一个参数为正则表达式,在输入正则表达式后按 TAB 将打开一个自动完成菜单,其中包含所有与该模式匹配的文件。

如果我将我的命令命名为 vimf(意思是 vim 查找)并编写自动完成函数,例如:

#compdef vimf

_arguments "1: :_files -g \"**/*.conf\""\

在上面的自动完成功能中,输入 $vimf 会在自动完成菜单中列出所有以.conf 结尾的文件。现在,我希望这部分 .conf 取自命令的第一个参数。所以,如果我输入类似:vimf *.pp,我希望它只搜索以 *.pp 结尾的文件。

我怎样才能做到这一点?在编写自动完成函数时如何使用命令的参数?

【问题讨论】:

  • 嘿@shadyabhi,你添加了尝试的机会吗? :)

标签: autocomplete zsh


【解决方案1】:

为此,您需要使用设置为命令行内容的words 数组。

从这里,您可以通过访问好的索引检索文件类型,并 troncate 前缀。 (这是由#compdef vimf 完成的)

结果如下:

#compdef vimf

_arguments "1: :_files -g \"**/*.${words[2]##*.}\""\
           && return 0

我在我的终端上试过了,它可以工作,但如果你是通过 root 执行此操作,当然可能需要很长时间才能执行。 享受吧:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2022-08-15
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多