Akh*_*hil 7 shell bash zsh autocomplete
我最近从 bash 转向了 zsh。
当我运行时complete -f _ssh sshrc
它显示
zsh: command not found: complete
Run Code Online (Sandbox Code Playgroud)
zsh 中bash 的替代方案是什么complete
?
如何在 zsh shell 中添加别名命令到自动补全?
我假设您正在使用 \xe2\x80\x9cnew 完成系统\xe2\x80\x9d ( compinit
),如果没有看到下面。
默认情况下,zsh 在执行补全之前会扩展别名,因此如果sshrc
是带有一些额外选项的别名ssh
,您将获得开箱即用的补全。但如果sshrc
是函数或脚本,则需要解释如何完成它。
要使命令使用特定函数,请使用该compdef
函数:
compdef _ssh sshrc\n
Run Code Online (Sandbox Code Playgroud)\n大多数补全函数都不会遇到一个额外的困难_ssh
:它根据命令名称,或更准确地说根据 \xe2\x80\x9c 服务名称\xe2\x80\x9d 来执行不同的操作。默认情况下是命令名称。如果\n_ssh
无法识别命令名称,则它不会提供任何补全。
要sshrc
像 一样完成ssh
,请直接指示 zsh 执行此操作。这不仅设置了sshrc
要完成的_ssh
功能,而且还声明了服务名称,以便sshrc
正常工作。ssh
_ssh
compdef sshrc=ssh\n
Run Code Online (Sandbox Code Playgroud)\n在引擎盖下,这执行
\n_comps[sshrc]=$_comps[ssh]\n_services[sshrc]=ssh\n
Run Code Online (Sandbox Code Playgroud)\nZsh 有三种补全机制:\xe2\x80\x9cold-style\xe2\x80\x9d 补全compctl
,\xe2\x80\x9cnew-style\xe2\x80\x9d 补全(在 1990 年代引入,所以它\'这不完全是新奇的),还有一个用于 bash 补全的兼容层。
默认情况下,zsh 使用旧的完成系统,以实现向后兼容性。但任何在新的补全系统可用后开始使用 zsh 的人都应该使用它。新用户向导可以将必要的行添加到您的配置文件中。如果您没有机会运行它,或者您想重新运行它,请参阅运行 Zsh 首次使用向导,选择 \xe2\x80\x9c 使用新的完成系统。\xe2\x80\x9d,调整根据需要进行设置,然后确认更改直至保存。
\n如果你输入bashcompinit
你的.zshrc
,它定义了一个complete
与 bash 大部分兼容的函数。兼容性并不完美,但足以运行人们用自己的程序编写和分发的大多数完成功能。
PS 作为 zsh 的新用户,您可能对我对 bash 和 zsh 之间差异的概述感兴趣。
\n 归档时间: |
|
查看次数: |
5094 次 |
最近记录: |