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.