为什么与 Bash 不同,几乎所有 Zsh 可执行文件的“--help”选项都无法工作,它的对应项是什么来帮助用户对其执行操作?
答案1
TL、DR:按Alt+ H。
我猜你是在询问 zsh 的帮助内置函数(),因为zsh
可执行文件确实理解--help
.
从 zsh 中获取有关 zsh 内置帮助的预期方法是使用run-help
功能。不幸的是,尽管 zsh 的某些发行版(例如 Debian 和包括 Ubuntu 在内的衍生版本)在系统文件中启用了它,但默认情况下它并未启用zshrc
。
为了确保该run-help
功能已启用,请将其放入您的~/.zshrc
文件中:
if ((${+aliases[run-help]})); then unalias run-help; fi
autoload -Uz run-help
默认情况下,除非您使用 vi 编辑模式,否则run-help
绑定到组合键^[h
ieEsc H或Alt+ H。即使没有上面的行也是如此,但如果没有它们,就会直接run-help
运行man
,这对于内置函数不起作用。
开始键入程序名称为内置程序或可执行文件的命令,然后按^[h
。光标可以位于命令名称内或参数内。这会调用man
,但如果该命令是 zsh 内置命令,则会显示 zsh 手册中记录该内置命令的部分。当您退出时man
,您将返回您正在输入的命令行。
暗星%别名 -Esch
阅读内置文档alias
,然后退出 man reader。
暗星%别名 -
如果您使用 vi 编辑模式,您还需要绑定run-help
到一个键。要在插入模式和命令模式下将其绑定到 Alt+H,您可以使用
bindkey -M viins '^[h' run-help
bindkey -M vicmd '^[h' run-help
至于为什么--help
不起作用:--help
是由GNU项目引入并推动的,连同长选项( --foo
)。 Bash 是一个 GNU 组件,所以它自然地用于--help
帮助。 Zsh 不是 GNU 组件,它只支持短选项(--foo
技术上是选项的分组--
,-f, and
-o` 两次)。