mojave - La finalización de Git no funciona en zsh en OS X Yosemite con Homebrew
uninstall zsh mac (2)
No puedo hacer que git complete funcione en mi OS X Yosemite recién instalado en el shell zsh. He instalado tanto git como zsh usando homebrew:
brew install zsh git
Al instalar git a través de homebrew, debería configurar la tabulación completa para ti, pero cuando git <tab>
, solo intenta completar los directorios con tabulación, y no los comandos de git. Es decir, no está dando ningún error, simplemente no funciona, como si no estuviera configurado.
Esto es lo que sé hasta ahora.
Aparentemente, zsh buscará formas de autocompletar buscando archivos _*
en uno de los directorios en $fpath
. Esto es mío:
% echo $fpath
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.6/share/zsh/functions
Mirando el primer camino que vemos:
% ls -l /usr/local/share/zsh/site-functions
lrwxr-xr-x 1 watson admin 55 Oct 20 12:08 _git -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/_git
lrwxr-xr-x 1 watson admin 70 Oct 20 12:08 git-completion.bash -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/git-completion.bash
Así que parece estar configurado para trabajar fuera de la caja, pero no lo hace.
Esto es lo que también he intentado.
git-completed.bash
- Descargando git-completion.bash
- Ejecutándolo usando la
source git-completion.bash
Este tipo de trabajo (es decir, habilita la finalización automática), pero imprime una advertencia:
WARNING: this script is deprecated, please see git-completion.zsh
git-completed.zsh
Por lo tanto, debido a la advertencia anterior, obviamente también intenté descargar git-completion.zsh y seguí la guía en la parte superior del archivo, pero básicamente te dice que primero busques el archivo .bash, lo cual puede causar un error. .
Buscar StackOverflow y Google
He intentado casi todo lo que pude encontrar buscando aquí y en Google, pero nada parece funcionar para mí.
¡Acabo de encontrar la respuesta!
En mi caso me faltaban algunas piezas importantes en mi archivo .zshrc
. Pero primero, un poco de historia:
Lo que estoy tratando de hacer es configurar el " Sistema de finalización zsh ". Viene con muchos comandos, todos llamados algo con comp*
. Intenté ejecutar esto varias veces, pero en muchos casos zsh simplemente me decía que no los conocía. Así que aparentemente tienes que autoload
, entre otras cosas.
Esto es lo que hice:
.zshrc
las siguientes líneas a mi archivo .zshrc
:
autoload -U compinit && compinit
zmodload -i zsh/complist
Entonces abrí una nueva terminal y corrí:
rm -f ~/.zcompdump; compinit
Luego abrí una nueva terminal y ahora git <tab>
funcionó como se esperaba :)
Si está configurando un $fpath
personalizado en su archivo .zshrc
, le recomendaría agregar estas líneas después de haber modificado el $fpath
(aunque no sé si hay alguna diferencia).
Mi problema era mucho más simple; Olvidé cambiar mi shell por defecto.
echo $SHELL
y si es /bin/bash
, simplemente escriba chsh -s /bin/zsh