如何防止 vim 在 zsh 上打开具有指定扩展名的文件?

How do I prevent vim from opening files with specified extensions on zsh?

假设我在一个目录(使用 zsh)中包含以下三个文件:hello.chello.ohello.d.

现在,如果我输入 vim he 并按 TAB,我想要 zsh,而不是给我 vim hello.,给我 vim hello.c 忽略 hello.ohello.d.

我只希望它适用于 vim,而不是其他命令 xxd。有没有办法在 zsh 中实现这一点?

谢谢

尝试将此添加到 .zshrc

autoload -Uz compinit && compinit
zstyle ':completion:*:*:(vim|gvim):*' ignored-patterns '*.(o|d)'

件数:

  • compinit - 初始化完成系统。
  • zstyle - 可用于自定义完成系统等的内置配置。为要操作的代码提供键值对。
  • :completion ... - 此特定键值对的 'context'。它是一组多层次的模式。找到您需要的上下文可能会让人望而生畏,但对于制表符补全,您通常可以指望 completion 是第一个术语,程序名称是第四个术语。
  • (vim|gvim) - 程序名称。这是一个类似 glob 的模式,因此这适用于 vimgvim.
  • ignored-patterns - 样式,即我们正在设置的键。
  • '*.(o|d)' - 键值对的值。在这里,这是我们要忽略的 glob 模式。接受多个参数; '*.o' '*.d' 效果相同。

大多数样式以及 zstyle 命令的一些文档都记录在 zshmodules 手册页中。