Estou tentando modificar o comportamento da conclusão do zsh e seus menus. Eu estou preso, e eu li muita documentação, isso está fazendo minha cabeça girar.
O seguinte é apenas um exemplo; Eu prefiro respostas que não são específicas de cd
.
Eu configurei o zsh para mostrar apenas o menu de seleção se a conclusão for inequívoca ( zstyle ':completion:*:*:*:*:*' menu select=2
).
Eu tenho um alias alias cd='nocorrect cd'
. Quando eu faço cd<TAB>
(sem espaço), o zsh acha que não é ambíguo e completa o alias. O zsh acha que não é ambíguo - na verdade, quando eu faço cd<^D>
, ele mostra apenas uma conclusão possível. Na minha opinião, deve mostrar outras opções de conclusão, como cdiff
. De fato, quando eu faço cd<^Xn>
, vejo essas outras opções. Esse também é o comportamento demonstrado no Guia do usuário do ZSH, seção 6.5.2 .
Eu meio que vejo o que está acontecendo. Eu tenho meus conclutores configurados como zstyle ':completion:*' completer _expand _expand_alias _complete _ignored _match _correct _approximate _prefix
, então posso entender por que a expansão desse alias é a primeira prioridade. Eu simplesmente não consigo entender porque é a opção somente .
Eu acho que é algo a ver com tag-order
, como no segundo exemplo na seção seção 6.4 do guia do usuário .2 . No entanto, não tenho nada parecido configurado para esse contexto ( :completion::complete:-command-::
) ou qualquer outra coisa da qual possa herdar.
Todas as minhas configurações relacionadas à conclusão estão em este arquivo no Github . Subindo de lá, você pode ver minha configuração zsh em sua totalidade; no entanto, eu não tenho nada configurado para :completion:
fora desse arquivo, inclusive no meu .zshrc
, então duvido que qualquer coisa esteja substituindo isso.
Então, alguém pode me explicar o que fazer para obter o comportamento que eu quero?
FYI, estou usando o zsh com o framework Prezto, que, acredito, é irrelevante, já que o problema é totalmente relacionado a recursos e módulos zsh integrados.
Alguma saída:
cd<TAB>
: altera apenas cd
para nocorrect cd
, sem menu.
$ cd<^D>
-- alias --
nocorrect cd
$ cd<^Xn>
-- external command --
cdbs-edit-patch cd-fix-profile cdiff
cd-create-profile cd-iccdump
-- builtin command --
cd
-- shell function --
cdls
-- alias --
cd
-- parameter --
CDPATH cdpath