Às vezes, um comando não tem uma conclusão instalada - ou pode aceitar sintaticamente vários tipos de argumentos, tornando a conclusão quase inútil. Por exemplo, "git checkout" pode receber o nome de qualquer arquivo rastreado pelo gitouo nome de qualquer árbitro ou outra árvore. Também pode levar alguns sinalizadores de opção. São muitas conclusões possíveis.
Sabendo que desejo completar, digamos, um nome de branch, existe uma maneira de vincular uma chave para completar ou exibir um menu de nomes de branch? (E da mesma forma para qualquer categoria de conclusão.)
Isso parece possível e útil, mas ainda não vi isso ser feito.
Responder1
Sim, isso pode ser feito. Originalmente, recebi o seguinte de uma das listas de discussão do zsh, mas não me lembro quem postou:
zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file
Isso poderia ser facilmente adaptado para usar uma função de conclusão diferente em vez de _files
.
A primeira linha define um novo widget de conclusão nomeado complete-file
que se comporta como o widget integrado complete-word
e usa a _generic
função para gerar a lista de conclusões.
A segunda linha então o configura para que quando esse widget customizado for usado, o completador use apenas _files
para obter a lista de conclusões.
Em seguida, a terceira linha vincula o novo widget a uma sequência de teclas.