Ajuste de autocompletado de zsh git


10

Acabo de cambiar de bash a usar zsh 4.3.4 en Ubuntu Hardy. Estoy desarrollando con git y me encuentro luchando constantemente con las finalizaciones de git predeterminadas: la finalización del nombre de archivo intenta ser inteligente al detectar lo que ha agregado o eliminado (usando archivos git-ls), pero a veces las cosas se equivocan --- por ejemplo, si está en un subdirectorio. Tampoco conoce mis alias personalizados de git (por ejemplo, git ci como un alias para commit).

Superusuarios de zsh, ¿cómo debo mejorar esta situación?

Estos son algunos de mis pensamientos, aunque no sé cómo implementarlos, ya que soy nuevo en zsh, así que tal vez puedas ayudar u ofrecer los tuyos propios:

  • Deshabilite la finalización del nombre de archivo git, dejando solo la finalización de branch / tag / command-name / command-option.
  • Reemplace la finalización del nombre de archivo "inteligente" con la finalización del nombre de archivo zsh normal.
  • Obtenga un archivo de finalización _git más nuevo, si corrige estos errores, y anule el sistema.

¡Gracias!



Sí, por lo que puedo decir, solo agrega un indicador git y no modifica las terminaciones subyacentes.
Emil Sit

¿Alguien puede decirnos cómo deshabilitar toda la finalización "inteligente" para todos los comandos git? Hacen demasiado IO. El caparazón debe responder al instante. Solo quiero volver a la buena terminación de nombre de archivo simple para los comandos git. Cada vez que hago una búsqueda web para esto, solo obtengo un laberinto de información genérica de la página del manual de zsh.
Peter Lyons

2
Para su información, para cualquiera que quiera deshabilitar la molesta finalización de git que hace que el shell bloquee hacer IO, en Ubuntu 10.04, acabo de hacer esto: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Respuestas:


5

Intente actualizar a la última versión de Zsh. Acabo de actualizar de 4.3.4 a 4.3.10 y al menos soluciona el problema con los alias Git que no se completan.

En lugar de piratear mi instalación, agregué esto a mi 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 proyectos grandes, incluso los scripts de finalización de git más nuevos son demasiado lentos. Para deshabilitarlos y simplemente usar la finalización normal del archivo, coloque el siguiente comando en su .zshrc:

compdef -d git
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.