Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Shell zsh可以完成命令标志吗?_Shell_Command Line_Zsh_Flags_Zshrc - Fatal编程技术网

Shell zsh可以完成命令标志吗?

Shell zsh可以完成命令标志吗?,shell,command-line,zsh,flags,zshrc,Shell,Command Line,Zsh,Flags,Zshrc,有没有办法让zsh在命令行上完成长标志名 $ command --reall<tab> $ command --really-long-flag-name $command--reall $command——真正的长标志名 这似乎是一件很明智的事情。简单的答案是肯定的,或者当然可以 要打开zsh的完成系统,您需要执行以下操作–可能在启动文件中,如~/.zshrc: autoload -U compinit && compinit 在大多数现代类Unix系统上,

有没有办法让zsh在命令行上完成长标志名

$ command --reall<tab> 
$ command --really-long-flag-name
$command--reall
$command——真正的长标志名

这似乎是一件很明智的事情。

简单的答案是肯定的,或者当然可以

要打开zsh的完成系统,您需要执行以下操作–可能在启动文件中,如
~/.zshrc

autoload -U compinit && compinit
在大多数现代类Unix系统上,一旦这样做,您应该会发现许多命令已经完成了它们的标志和参数,因为zsh附带了一个用于常见Unix命令和实用程序的完成函数库。此库应安装在类似于
/usr/local/share/zsh/function
(或类似位置,取决于您的系统)的位置,并由一组文件名以
字符开头的脚本组成,每个脚本定义特定命令的完成

如果您感兴趣的命令或实用程序尚未由zsh正确完成,则您有几个选项:

  • 检查一下包裹。(它很可能可以由您的操作系统或发行版的软件包管理器安装。)

  • 阅读您希望完成的工具的文档。许多Unix实用程序附带用于bash和/或zsh的完成脚本,或者以某种方式生成完成脚本

  • 如果其他方法都失败了,请阅读(或找到一本好书或在线教程)并自己编写。显然,这不是小事


阅读zsh文档还可以向您展示如何做您可能还不知道的其他事情,类似于打开基于菜单的补全。

一个可能值得直接从zsh补全中引用的小添加是
compdef\u gnu\u generic
,它解析命令的
--help
输出以组装补全。感谢@wjv--我相信我在
.zshrc
中遇到了
compinit
问题。“它现在可以正常工作了。@Sasgorilla很好,很高兴听到它。