Conclusão zsh arbitrária usando uma tecla de atalho

1

Às vezes, um comando não tem uma conclusão instalada - ou sintaticamente poderia aceitar um monte de tipos de argumentos, tornando a conclusão quase inútil. Por exemplo, "git checkout" pode pegar o nome de qualquer arquivo rastreado pelo git ou o nome de qualquer ref ou outro tree-ish. Também pode levar alguns sinalizadores de opção. Isso é um monte de conclusões possíveis.

Sabendo que quero concluir, digamos, um nome de ramificação, existe uma maneira de vincular uma chave a ser concluída ou exibir um menu de nomes de ramificação? (E, da mesma forma, para qualquer categoria de conclusão .)

Parece ser possível e útil, mas ainda não o fiz.

    
por Peeja 31.10.2012 / 16:55

1 resposta

2

Sim, isso pode ser feito. Eu 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 pode 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 chamado complete-file , que se comporta como o widget complete-word embutido e usa a função _generic para gerar a lista de conclusões.

A segunda linha, em seguida, configura-o para que, quando esse widget personalizado for usado, o completer usará apenas _files para obter a lista de conclusões.

Em seguida, a terceira linha liga o novo widget a uma sequência de chaves.

    
por 31.10.2012 / 20:43

Tags