Zsh 中的 _valgrind 是什么?

Zsh 中的 _valgrind 是什么?

我使用的是 macOS 11.0.1,想安装valgrind它进行 C 编程。为了检查它是否默认安装在 macOS 上,我valgr在终端中输入并按下 Tab 键,令我惊讶的是,这个短语自动补全为_valgrind.valgrind本身,但并未安装。

经过一番挖掘(type _valgrind),我发现_valgrind是一个在中定义的函数/usr/share/zsh/5.8/functions/_valgrind

所以我的问题是:这个函数是什么,它有什么用?我的脚本编写技能不太好,所以我真的搞不懂这个函数。

谢谢!

答案1

带有下划线前缀的函数(尤其是来自 的函数/usr/share/zsh)通常制表符补全脚本– 当您在编写命令行时按下时,它们会被调用Tab,并生成显示的建议列表。(不,建议不是直接从命令本身获取的;列表必须手动维护。)

例如,如果您输入,zsh 将调用 _valgrind 函数来生成诸如 之类的建议。valgrind --maxTab--max-threads=

(请注意,下划线命名只是一种通用惯例——但实际上并非如此使它是一个完成函数;它仍然必须使用“compdef”绑定到某个单词。)

(另外需要注意的是,Arch Linux 的 zsh 5.8 似乎使用了非常结构不同对于完成脚本——它们不再是函数,而是带有特殊#compdef标头的文件。我不知道它是如何工作的,也不知道为什么同一个 zsh 版本在两个系统上的做法不同。)

相关内容