使用键绑定进行任意 zsh 补全

使用键绑定进行任意 zsh 补全

有时命令没有安装补全功能——或者语法上可以接受一大堆类型的参数,导致补全几乎毫无用处。例如,“git checkout”可以采用任何 git 跟踪文件的名称或者任何 ref 或其他 tree-ish 的名称。它还可以采用一些选项标志。有很多可能的完成。

知道我想要完成(比如说)一个分支名称,有没有办法绑定一个键来完成或显示分支名称的菜单? (对于任何完成类别同样如此。)

这似乎是可行且有用的,但我还没有看到过这样的做法。

答案1

是的,可以这样做。我最初从一个 zsh 邮件列表中获得了以下内容,但我不记得是谁发布的:

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file

这可以很容易地适应使用不同的完成功能而不是_files

第一行定义了一个新的完成小部件,complete-file其行为类似于内置complete-word小部件,并使用该_generic函数生成完成列表。

然后第二行对其进行配置,以便当使用该自定义小部件时,完成器将仅用于_files获取完成列表。

然后第三行将新的小部件绑定到一个键序列。

相关内容