.png)
me cambié azshy lo encuentro mejor queintento, pero tengo un problema conoh-mi-zsh's (en adelante "OMZ") función de autocompletar.
Cuando escribo git chec
, OMZ lo completa para git check
; enintentose completa a git checkout
. También tengo un problema con las sucursales remotas: ori
completadas para oriG
y orig
para origin
, enintentose completa paraorigin/
tengo el mismo problema con otrosgitcomandos como checkout
.
Creo que el problema es elaliasagregado por el complemento. No los uso porque no quiero acostumbrarme a ellos, pero interrumpen la función de autocompletar.
¿Hay alguna manera de conseguir elintentoautocompletar (sé que no hay un autocompletado incorporado en bash) enzsh? O una forma de piratear el complemento OMZ para que no se rompa con cada actualización.
Respuesta1
La finalización y su origen pueden resultar bastante confusos. Tome un sistema Ubuntu 14.04 como ejemplo:
$ dpkg -L zsh-common | grep git
/usr/share/zsh/functions/Completion/Debian/_git-buildpackage
/usr/share/zsh/functions/Completion/Unix/_stgit
/usr/share/zsh/functions/Completion/Unix/_git
/usr/share/zsh/functions/Completion/Unix/_topgit
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_get_data_git
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_detect_git
/usr/share/zsh/functions/Misc/run-help-git
El zsh-common
paquete incluye funciones de finalización de git. Por otro lado, el git
paquete también viene con archivos de finalización para bash y zsh:
$ dpkg -L git | grep compl
/etc/bash_completion.d
/etc/bash_completion.d/git-prompt
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/git
/usr/share/bash-completion/completions/gitk
Que contiene archivos como
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <[email protected]>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
El paquete git incluso proporciona un mensaje de reconocimiento de git que se puede habilitar, todo sin complementos sofisticados como oh-my-zsh.
En resumen, la finalización del subcomando git puede provenir de su shell (zsh):
https://github.com/zsh-users/zsh/blob/master/Completion/Unix/Command/_git
de git
https://github.com/git/git/tree/master/contrib/completion
o desde complementos como oh-my-zsh.
Volviendo a su pregunta: el antiguo comportamiento de completar git chec
que usted describe en realidad tiene errores. chec
sigue siendo ambiguo y un script de finalización adecuado no debería completarlo checkout
, ya que hay varios subcomandos que comienzan con chec
. Si desea ese comportamiento, averigüe cuál de los muchos scripts de finalización que existen estaba usando antes, deshabilite el complemento git oh-my-zsh y continúe usando su antiguo script de finalización.
Alternativamente, recomendaría configurar un alias y acostumbrarse a él. Puedes usar
git config --global alias.co checkout
para crear git co
su nuevo git checkout
: el complemento oh-my-zsh conoce estos alias y aún así completará los nombres de las ramas y etiquetas a continuación.