Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为zsh完井系统提供数据_Zsh - Fatal编程技术网

如何为zsh完井系统提供数据

如何为zsh完井系统提供数据,zsh,Zsh,是否有提供程序开关列表的标准方法,以便zsh能够确定可能的完成情况?或者它必须直接提供给zsh开发人员,并且只有他们才能向zsh添加补全?您的第一站应该是man zshcompsys 然后您可以查看一个示例,例如/usr/share/zsh/functions/Completion/Unix/_vimZ-Shell不会自动知道哪些可能的开关与哪些二进制文件一起工作。据我所知,shell没有标准的方法来确定这一点 ZSH使用为特定程序编写的完成函数来工作。例如,zsh附带用于ssh、cvs、git

是否有提供程序开关列表的标准方法,以便zsh能够确定可能的完成情况?或者它必须直接提供给zsh开发人员,并且只有他们才能向zsh添加补全?

您的第一站应该是
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)