Git завершение не работает в zsh на OS X Yosemite с Homebrew
Я не могу получить завершение git для работы с моей только что установленной OS X Yosemite в оболочке zsh. Я установил оба git и zsh, используя homebrew:
brew install zsh git
При установке git через homebrew он должен установить для вас завершение табуляции, но когда я git <tab>
, он просто пытается выполнить табуляцию каталогов, а не команд git. То есть он не дает никаких ошибок - он просто не работает - как будто он не настроен.
Это то, что я знаю до сих пор
Очевидно, zsh будет искать способы автозаполнения, ища файлы _*
в одном из каталогов в $fpath
. Это мое:
% echo $fpath
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.6/share/zsh/functions
Глядя на первый путь, мы видим:
% 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
Итак, похоже, что настройка работает из коробки, но это не так.
Это то, что я также пробовал
git -completion.bash
Этот один вид работ (например, он включает автозаполнение), но выводит предупреждение:
WARNING: this script is deprecated, please see git-completion.zsh
git -completion.zsh
Поэтому из-за вышеупомянутого предупреждения я, очевидно, также попытался загрузить git-completion.zsh и последовал руководству в верхней части файла, но в основном он говорит вам сначала создайте файл .bash, что по-прежнему вызывает ошибку.
Поиск StackOverflow и Google
Я пробовал все, что мог найти, ища здесь и в Google, но ничего не работает для меня.
Ответы
Ответ 1
Я просто наткнулся на ответ!
В моем случае я потерял несколько важных частей в моем файле .zshrc
. Но сначала немного фона:
То, что я пытаюсь сделать, это установить "zsh Completion System". Он поставляется с множеством команд, которые все называются с помощью comp*
. Я попытался запустить их несколько раз, но во многих случаях zsh просто сказал бы мне, что не знает их. Таким образом, вы должны autoload
их, между прочим.
Это то, что я сделал:
Я добавил следующие строки в мой файл .zshrc
:
autoload -U compinit && compinit
zmodload -i zsh/complist
Затем я открыл новый терминал и запустил:
rm -f ~/.zcompdump; compinit
Затем я открыл новый терминал и теперь git <tab>
работал как ожидалось:)
Если вы настраиваете $fpath
в своем файле .zshrc
, я бы рекомендовал добавлять эти строки после изменения $fpath
(хотя я не знаю, имеет ли значение это значение).
Ответ 2
Моя проблема была намного проще; Я забыл изменить свою оболочку по умолчанию.
echo $SHELL
и если это /bin/bash
тогда просто наберите chsh -s/bin/zsh