rgi*_*iot 6 zsh command-not-found
在默认配置庆典在Ubuntu的,当你键入未安装软件的名称,庆典解释如何,如果如果它存在的可执行文件安装,或者如何,如果它不安装可执行文件具有非常接近的名字存在。例如使用emacs(我的机器上没有安装它):
$ emacx
No command 'emacx' found, did you mean:
Command 'emacs' from package 'emacs23-lucid' (universe)
Command 'emacs' from package 'e3' (universe)
Command 'emacs' from package 'emacs23-nox' (main)
Command 'emacs' from package 'emacs24' (main)
Command 'emacs' from package 'emacs24-nox' (main)
Command 'emacs' from package 'emacs23' (main)
Command 'emacs' from package 'jove' (universe)
Command 'emacs' from package 'emacs24-lucid' (universe)
emacx: command not found
$ emacs
The program 'emacs' can be found in the following packages:
* emacs23
* emacs23-nox
* emacs24
* emacs24-nox
* e3
* emacs23-lucid
* emacs24-lucid
* jove
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud)
使用我当前的 zsh 配置,我获得:
$ emacx
zsh: command not found: emacx
$ emacs
zsh: command not found: emacs
Run Code Online (Sandbox Code Playgroud)
在已安装软件的名称中犯错时,行为也会有所不同。假设我想启动gedit而不是kedit。使用bash,我获得:
$ kedit
No command 'kedit' found, did you mean:
Command 'xedit' from package 'x11-apps' (main)
Command 'edit' from package 'mime-support' (main)
Command 'nedit' from package 'nedit' (universe)
Command 'gedit' from package 'gedit' (main)
Command 'jedit' from package 'jedit' (universe)
Command 'medit' from package 'medit' (universe)
Command 'ledit' from package 'ledit' (main)
kedit: command not found
Run Code Online (Sandbox Code Playgroud)
使用 zsh 我获得:
$ kedit
zsh: correct 'kedit' to 'edit' [nyae]?
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
Debian(可能还有 Ubuntu)的默认 zsh 配置不包括对command-not-found
默认包的支持。
为了具有相同的功能,你只需要源/etc/zsh_command_not_found
在你~/.zshrc
通过每默认:
[ -f /etc/zsh_command_not_found ] && . /etc/zsh_command_not_found
Run Code Online (Sandbox Code Playgroud)
这应该加载并启用command-not-found
的功能zsh
。