如何配置 zsh 让它向我解释在哪里可以检索可执行文件而不是说找不到文件?

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)

所以,我的问题是:

  • 尝试启动尚未安装的可执行文件时,是否可能在zsh中具有与bash类似的行为?如果是,如何?
  • 是否可以在出现打字错误时显示所有可能性,而不是给出一个可能错误的更正?

Ulr*_*gel 7

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