在zsh自动补全中隐藏某些选项

18

有一些命令有我不经常使用的深奥选项。例如,git 有 'check-attr'。我经常使用 'git checkout',所以我希望 git ch 自动补全为 git checkout 或显示一个不包含 check-attr 的菜单。我可以用 zstyle ... ignored-patterns 实现这一点。

然而,如果没有其他匹配项(如果我确实想运行 check-attr),我仍然希望完成 'git check-attr'。

看起来 'hidden' zstyle 是适合我的,但是如何在完成上下文中指定一个值(而不仅仅是一个标签)呢?例如,我需要类似这样的东西: zstyle ':completion:::git::' hidden-patterns 'check-attr'

这是可能的吗?


虽然不完全符合您的要求,但您可以将 git ch 显然设置为 git checkout 的别名,这样如果您只想使用 git checkout 而不必与 git check-attr 区分,则非常方便。 - a3nm
2个回答

4

我不是很清楚这个是怎么工作的,但结果是在输入git check<TAB>时会得到git checkout。请将以下代码添加到您的.zshrc文件中:

zstyle ':completion::complete:git:*:*' ignored-patterns 'check*-*'

如果您能理解,请参见http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Overview-1,其中提供了一些关于自动补全系统的信息。


1

类似这样的代码应该可以解决问题:

zstyle ':completion::complete:*:git:*' ignored-patterns check-attr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接