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!



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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.