Como posso configurar o zsh para que ele me explique onde posso recuperar um executável em vez de dizer que o arquivo não foi encontrado?

6

Na configuração padrão de bash em ubuntu , quando você digita nome de um software que não está instalado, bash explica como instalá-lo se o executável, se existir, ou como instalar um executável com um nome realmente próximo, se ele não existir. Por exemplo, com emacs (que não está instalado na minha máquina):

$ 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>

Com minha configuração atual de zsh, obtenho:

$ emacx
zsh: command not found: emacx
$ emacs
zsh: command not found: emacs

Há também uma diferença de comportamento ao cometer um erro no nome de um software instalado. Digamos que eu queira lançar gedit em vez de kedit . Com bash , obtenho:

$ 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

Enquanto com zsh eu obtenho:

$ kedit
zsh: correct 'kedit' to 'edit' [nyae]?

Então, minhas perguntas são:

  • É possível ter um comportamento semelhante em zsh como em bash ao tentar iniciar um executável ainda não instalado? Se sim, como?
  • É possível exibir todas as possibilidades quando há um erro de digitação, em vez de dar uma correção que pode estar errada?
por rgiot 20.02.2013 / 18:01

1 resposta

7

A configuração zsh padrão para o Debian (e provavelmente o Ubuntu) simplesmente não inclui suporte para o pacote command-not-found por padrão.

Para ter a mesma funcionalidade, basta acessar /etc/zsh_command_not_found no seu ~/.zshrc por padrão via:

[ -f /etc/zsh_command_not_found ] && . /etc/zsh_command_not_found

Isso deve carregar e ativar a funcionalidade command-not-found em zsh .

    
por 20.02.2013 / 18:36