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

  • Загрузка git-completion.bash
  • Запуск с помощью source 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