A verificação ortográfica automática pode ser ativada de duas maneiras (eu uso "Do bash ao Z Shell" por O. Kiddle et al. como um guia / referência):
-
setopt correct
Depois de pressionar Enter, zsh "olha a palavra de comando e, se não a reconhece como um comando, tenta encontrar uma correção, que então lhe oferece".
-
setopt correctall
Como correct
, mas, além disso verifica os "argumentos após o comando. No entanto, ele simplesmente assumens eles são arquivos, e tenta corrigir as palavras para nomes de arquivos. Muitas vezes não é o que você quer "
Então, o último explica, porque você recebe spec
oferecido como correção para rspec
- zsh acha que deveria ser um arquivo (ou no seu caso um diretório). Não explica, porque está trabalhando na outra máquina. (Suponho que alguma configuração diferente em seus arquivos de configuração pessoais ou globais ( ~/.zshrc
ou /etc/zsh/
), menos provavelmente um problema de versão.)
[Intimamente relacionado a esta verificação ortográfica bastante simples é uma característica do sistema de conclusão, chamado de "conclusão aproximada". O sistema de conclusão é zsh é um muito avançado vale a pena um estudo próprio. (*) Como eu não uso essa "conclusão aproximada" eu quero direcioná-lo para man zshcompsys
, seção "FUNÇÕES DO CONTROLO" _approximate
. se você estiver interessado.]
Mas, a menos que tenha razões especiais para isso, eu usaria unsetopt correctall && setopt correct
para se livrar do comportamento descrito (que é o último ponto proposto por Francisco) e usar uma função de conclusão decente para 'pacote (que é o meu último comentário) .
Com o auxílio de funções de conclusão, o zsh fica bastante "inteligente". Portanto, ele sabe, por exemplo, que após o sudo um comando deve seguir, portanto sudo pass
TAB será completado em sudo passwd
. Você usa bundle
, para o qual há também uma função de conclusão, mas, obviamente, não incluído por defeito (**) Com que você vai obter um bom lembrete de opções do pacote:.
$ bundle -TAB-
check -- Determine whether the requirements for your application are installed
config -- Specify and read configuration options for bundler
console -- Start an IRB session in the context of the current bundle
exec -- Execute a script in the context of the current bundle
gem -- Create a simple gem, suitable for development with bundler
...
e depois de digitar bundle exec
, você receberá apenas os comandos apresentados. Eu prefiro esse comportamento muito mais do que correção, mas depende de você.
(*) É ativado por autoload -U compinit && compinit
. Para verificar se está ativo (provavelmente é), use which compinit
:
$ zsh -f
$ which compinit
compinit not found
$ autoload -U compinit
$ which compinit
compinit () {
# undefined
builtin autoload -XU
}
(**) Cópia para um diretório que está na sua $fpath