【发布时间】:2022-12-12 03:11:36
【问题描述】:
我正在尝试了解 zsh 中的自动完成功能是如何工作的。我有一个简单的脚本文件 (example.zsh),我正在尝试创建一个简单的自动完成函数来描述它的每个参数。为此,我首先创建了一个简单的 _example 文件,如下所示:
#compdef create_ca
_arguments \
"--caKey[name of the file that will hold the keys used for generating the certificate (default: ca.key)]" \
"--caCrt[name of the file that will hold the certificate with the public key (default: ca.crt)]" \
"--cn[common name for the root certificate (default: root.GRM)]" \
"--days[number of days that certificate is valid for (default: 10500)]" \
"--size[key size (default: 4096)]" \
"--help[show this help screen]"
该文件与脚本位于同一文件夹中,我已经更新了我的.zshrc 文件,以便它将该文件夹添加到$fpath:
fpath=(~/code/linux_certificates $fpath)
autoload -Uz compinit
compinit -D
我正在使用 D 选项,因此不会生成 .zcompdump。乍一看,一切正常,但当我尝试更新助手自动完成功能时,我看不到这些更改(例如:更改描述)。我尝试重新运行 compinit 命令,并在使用缓存 .zcompdump 时删除该文件。但是,它根本不起作用。我设法让它工作的唯一方法是删除自动完成辅助函数:
unfunction _create_ca
这是预期的行为吗?我的意思是,运行 compinit -D 是否足以重新加载我的助手自动完成功能?
顺便说一句,关于如何创建自动完成功能的任何好的教程(除了官方文档)?
谢谢。
【问题讨论】:
标签: autocomplete zsh oh-my-zsh