我正在使用我的 zsh 版本(debian 10)附带的默认_gpg
完成文件。我已将文件粘贴在这里:https ://ctxt.io/2/AABg86pPFQzsh
5.7.1-1
当我这样做时gpg <TAB>
,zsh 会完成当前目录中的文件和目录。我想改变它,以便:
a) 如果我使用 gpg 没有进一步的参数(这意味着-d
),那么只有当前目录中的 *.gpg 文件完成(不是目录)
b)如果我使用-e
或-c
(暗示加密),则仅完成当前目录中的非 gpg 文件(不是目录)
c)对于其余的,我猜默认行为是好的
我已将以下内容添加到我的.zshrc
:
zstyle ':completion::complete:gpg:*' file-patterns '*.(gpg|sig)(.)'
但这应该只是案例a的规则)
我怎样才能实现上述行为?
我从未编辑过 zsh 完成文件,因此可能存在一些错误,但这可以满足您的要求:
该文件很大,因此第一眼很难注意到发生了什么变化,因此您可以使用
diff
工具快速查看:zstyle
可以用于-e
在运行时评估样式的值,因此尽管可能有一种更干净/更整洁的方式来做到这一点,但您始终可以执行以下操作:可以使用它
zparseopts
来处理类似的调用gpg -ve
或gpg --encrypt
......