Ajustando o preenchimento automático do zsh git

10

Acabei de mudar do bash para o zsh 4.3.4 no Ubuntu Hardy. Estou desenvolvendo com o git e me pego constantemente lutando com as conclusões padrão do git: a conclusão do nome do arquivo tenta ser inteligente, detectando o que você adicionou ou removeu (usando arquivos git-ls-files), mas às vezes as coisas estão erradas --- por exemplo, se você estiver em um subdiretório. Ele também não sabe sobre meus aliases personalizados do git (por exemplo, git ci como um alias para confirmação).

superusuários zsh, como devo melhorar essa situação?

Aqui estão alguns dos meus pensamentos, embora eu não saiba como implementá-los porque sou novo no zsh, então talvez você possa ajudar ou oferecer o seu:

  • Desative a conclusão do nome de arquivo git, deixando apenas a conclusão de branch / tag / command-name / command-option.
  • Substitua a conclusão do nome de arquivo "inteligente" pela conclusão regular do nome de arquivo zsh.
  • Obtenha um arquivo de conclusão _git mais recente, se ele corrigir esses erros, e substitua o do sistema.

Obrigado!

Emil Sit
fonte
Você já tentou github.com/robbyrussell/oh-my-zsh
ukanth
Sim, até onde eu sei, ele apenas adiciona um prompt git e não altera as conclusões subjacentes.
Emil Sit
Alguém pode nos dizer como desativar toda a conclusão "inteligente" de todos os comandos git? Eles fazem muito IO. O shell precisa responder instantaneamente. Eu só quero voltar à boa e antiga conclusão de nome de arquivo simples para comandos git. Toda vez que faço uma pesquisa na web para isso, recebo um labirinto de informações genéricas da página de manual do zsh.
Peter Lyons
2
FYI para quem quer apenas desativar a conclusão git irritante que faz com que o shell para bloquear fazendo IO, no Ubuntu 10.04, eu só fiz isso: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Respostas:

5

Tente atualizar para a versão mais recente do Zsh. Acabei de atualizar de 4.3.4 para 4.3.10 e pelo menos corrige o problema com os aliases do Git não concluídos.

Em vez de invadir minha instalação, adicionei isso ao meu local .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi
um nerd pago
fonte
5

Para projetos grandes, mesmo os scripts mais recentes de conclusão do git são muito lentos. Para desativá-los e usar a conclusão normal de arquivos, coloque o seguinte comando no seu .zshrc:

compdef -d git
rápido
fonte