如何为zsh完井系统提供数据
是否有提供程序开关列表的标准方法,以便zsh能够确定可能的完成情况?或者它必须直接提供给zsh开发人员,并且只有他们才能向zsh添加补全?您的第一站应该是如何为zsh完井系统提供数据,zsh,Zsh,是否有提供程序开关列表的标准方法,以便zsh能够确定可能的完成情况?或者它必须直接提供给zsh开发人员,并且只有他们才能向zsh添加补全?您的第一站应该是man zshcompsys 然后您可以查看一个示例,例如/usr/share/zsh/functions/Completion/Unix/_vimZ-Shell不会自动知道哪些可能的开关与哪些二进制文件一起工作。据我所知,shell没有标准的方法来确定这一点 ZSH使用为特定程序编写的完成函数来工作。例如,zsh附带用于ssh、cvs、git
man zshcompsys
然后您可以查看一个示例,例如/usr/share/zsh/functions/Completion/Unix/_vim
Z-Shell不会自动知道哪些可能的开关与哪些二进制文件一起工作。据我所知,shell没有标准的方法来确定这一点
ZSH使用为特定程序编写的完成函数来工作。例如,zsh
附带用于ssh
、cvs
、git
、ls
等的完成函数
如果您想查看这些完成函数,可以。如果您在zsh
shell中,echo$fpath
查看zsh
用于加载完成函数的函数路径。有一个名为/usr/local/share/zsh/4.3.17/function
(发行版/zsh版本的位置可能会有所不同)的目录,其中有一组以\ucode>-\ussh
,\ucvs
等开头的文件。这些是完成函数
一个大量的线索表明这些不是自动生成的,它来自\u ssh
完成函数中的一条注释,该函数随4.3.17
一起提供(可能在您的特定版本中,也可能不在您的特定版本中):
为Z-Shell提供完整性:使用fpath
您可以编写自己的完成函数,开发人员可以为自己的程序编写函数,并提交给zsh
开发人员。Z-Shell完成函数位于fpath
上的某个位置 如果程序(例如foobar
)遵循GNU约定的选项,您可以使用:
compdef _gnu_generic foobar
否则,您可以编写自己的函数。IMO最容易使用的是\u description
创建包含以下内容的文件\u foobar
:
#compdef foobar
cmds=(
“--一:选项一”
“--四:选项四”
'无斜杠:选项不需要以斜杠开头'
)
_描述“foobar”CMD
将文件放在$fpath
添加compdef\u foobar foobar
如果您将ruby与optparse软件包一起使用,则会有一个隐藏标志-*-completion zsh=NAME
,它将输出完成该ruby程序所需的所有内容。将它存储在$fpath
中名为_NAME的文件中,它就会工作。名称应与程序/脚本的名称完全相同
我在我的$HOME
中使用了一个文件夹,并将路径添加到$fpath
,但这需要在我的中添加一行。zshrc
:
autoload -U ~/.completion/*(:t)
autoload -U ~/.completion/*(:t)