Preenchimento automático estilo XCode Command-T para zsh

Preenchimento automático estilo XCode Command-T para zsh

Acabei de começar a usar o plugin Command-T para vim e ele é demais. Caso você ainda não tenha ouvido falar, permite digitar algo assim:

Sb

para selecionar Something.hs-boot da lista

src/project/Control/Whatever/Foobs.hs
src/project/Control/Whatever/Something.hs-boot
src/project/Control/Whatever/Something.hs

E assim por diante.

Fiquei me perguntando se poderia usar um estilo de preenchimento automático semelhante com zsh. Eu entendo que a conclusão do shell não poderia ser tão extensa quanto a conclusão do vim porque a conclusão do shell provavelmente não deveria pesquisar todo o sistema toda vez que você digita uma carta, mas existe algum tipo de conclusão semelhante onde eu poderia pelo menos tipo

s/p/c/w/Sb<tab>

e obter um efeito semelhante ao acima?

Ouvi dizer que o zsh tem uma funcionalidade de preenchimento automático muito bem programável, mas meu shell-fu é bastante fraco.

Alguém sabe como configurar isso?

Responder1

Para completar caminhos parciais, basta iniciar o sistema de conclusão (pelo menos no meu sistema, usando zsh v4.3.17):

autoload -U compinit && compinit
zmodload zsh/complist

Se quiser ser um pouco mais sofisticado, você pode tornar a correspondência insensível a maiúsculas e minúsculas:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'

Atualização 1:

Não sei se você pode fazer o preenchimento automático no estilo Command-T ... mas como o zsh precisa obtertodoscorresponde antes de exibir algo, fazer isso rapidamente, especialmente em algum lugar que tenha muitos subdiretórios/arquivos, pode não ser viável.

No entanto, você pode usar:

**/*thing <Tab>

Corresponde **a todos os arquivos e subdiretórios do diretório atual.

Ideia: Se não precisar ser uma lista atualizada de arquivos, você poderá escrever uma função de conclusão que use a saída de locate(ou seja, uma lista de arquivos pré-computada)

Atualização 2: https://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh

Responder2

Outra alternativa interessante é usar algo comofasd.

informação relacionada