我使用的是 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 版本在两个系统上的做法不同。)