Como posso fazer com que a conclusão do zsh se comporte como a conclusão do Bash?

12

Mudei para zsh, mas não gosto da conclusão. Se eu tiver 20 arquivos, cada um com um prefixo compartilhado, ao pressionar tab, o zsh concluirá completamente o primeiro arquivo e continuará percorrendo a lista a cada pressionamento de tab. Se eu quiser um próximo do final, teria que pressionar tab várias vezes.

No bash, isso era simples - pressione tab e eu obteria o prefixo. Se eu continuasse digitando (e pressionando tab), o bash seria concluído na medida do possível. Acho esse comportamento muito mais intuitivo, mas prefiro os outros recursos do zsh ao bash.

Existe uma maneira de obter esse estilo de conclusão? O Google sugeriu setopt bash_autolist, mas isso não teve efeito para mim (e nenhuma mensagem de erro foi impressa ao iniciar meu shell).

Obrigado.

nsm
fonte

Respostas:

7

Tentar:

setopt autolist
unsetopt menucomplete
Pausado até novo aviso.
fonte
Funciona muito bem, não exatamente o mesmo, mas é definitivamente algo com o qual posso me acostumar. Muito obrigado!
Nsm
8

O que você quer é provavelmente o seguinte:

setopt noautomenu
ggustafsson
fonte
1
(10 anos depois) A resposta aceita não teve efeito (aparente) para mim. Era exatamente isso que eu queria e parece que o OP estava pedindo.
Jer
1

Há outra opção se você usar a opção "menu select" no .zshrc assim:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Você poderá navegar pelo resultado com as teclas de seta. Vamos dar o seu exemplo com "20 arquivos com um prefixo compartilhado":

  • ao pressionar [TAB] pela primeira vez, o zsh concluirá o máximo possível e exibirá uma lista de possibilidades
  • então você pode concluir como faria no bash (digite um caractere extra, vá para 0)
  • ou digite novamente [TAB] e você verá as opções possíveis destacadas no menu abaixo do prompt do shell; bônus, você pode navegar nas possibilidades com as teclas de seta

No final, para alcançar a última possibilidade:

  • com o Bash, na melhor das hipóteses, você pressiona [TAB], depois um caractere extra e depois [TAB] novamente (talvez mais)
  • com Zsh, você pressiona [TAB], depois [TAB] novamente (para entrar no menu) e, em seguida, "<-" (tecla de seta à esquerda) para alcançar os últimos elementos

Ambos são três pressionamentos de tecla neste mesmo caso. O resto é principalmente uma questão de gosto.

jbbarth
fonte