Есть кое-что, чего я не понимаю в Git и его завершении в Zsh.
Я использую Windows-машину с Git (v2.11. Для Windows) и Cygwin с Zsh (с Babun). Когда я git checkout
и дважды нажимаю TAB
, я получаю сообщение о завершении для ветвей и имен объектов:
Довольно аккуратно! Теперь на моей машине с OS X с Git (2.13.0 для Mac, установленной через Homebrew) и Zsh, когда я набираю git checkout
и дважды нажимаю TAB
, я получаю только это:
Откуда берется функциональность в первом приглашении? Другими словами, что мне нужно установить в OS X / Zsh, чтобы это произошло?
Некоторые вещи, которые я пробовал:
- Я уже исключил, что это делает
git
плагин Oh-my-Zsh, потому что когда я отключаю это в Windows/Cygwin, я все равно получаю такое же модное завершение. - Все, что мне нужно сделать в Windows, начиная с пустого
.zshrc
чтобы это завершение работало, это запуститьautoload -U compinit && compinit
- Я попытался добавить
fpath=(/usr/local/share/zsh/site-functions/ $fpath)
к моему.zshrc
в надежде, что он поймет, что установлен Homebrew (как упомянуто в выводеbrew info git
), но это ничего не изменило. - Я попытался установить
zsh-completions
из Homebrew, добавивfpath=(/usr/local/share/zsh-completions $fpath)
в мой.zshrc
как было предложено. Все еще без изменений. - Что меня смущает еще больше, так это то, что недавно я использовал MacBook от коллеги, который мало что знал о Git. У него был только установлен Git. Он получил такое же расширенное завершение, ничего не настроив.
- Мой
.zcompdump
, если это поможет: https://pastebin.com/raw/UzrZ2NqD - Мой
.zshrc
: https://github.com/slhck/dotfiles/blob/master/.zshrc
Еще несколько отладочных выводов из OS X, когда я git
, затем Ctrl-X
, затем h
:
tags in context :completion::complete:git::
argument-1 options (_arguments __git_zsh_main _git)
use-compctl (_default _git)
globbed-files (_files _default _git)
tags in context :completion::complete:git:argument-1:
alias-commands common-commands all-commands (__git_zsh_main _git)
alias-commands (__git_zsh_cmd_alias __git_zsh_main _git)
common-commands (__git_zsh_cmd_common __git_zsh_main _git)
all-commands (__git_zsh_cmd_all __git_zsh_main _git)
Тогда как когда я делаю то же самое на Windows/Cygwin, я получаю:
tags in context :completion::complete:git::
argument-1 options (_arguments _git)
tags in context :completion::complete:git:argument-1:
aliases main-porcelain-commands user-commands third-party-commands ancillary-manipulator-commands ancillary-interrogator-commands interaction-commands plumbing-manipulator-commands plumbing-interrogator-commands plumbing-sync-commands plumbing-sync-helper-commands plumbing-internal-helper-commands (_git_commands _git)
Вывод ls -l ${^fpath}/_git
ls: /Users/werner/.oh-my-zsh/completions/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/functions/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/brew/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/docker-compose/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/docker/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/gem/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git-extras/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git-flow/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/github/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/osx/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/python/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/rails/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/ruby/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/svn/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/vagrant/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/virtualenv/_git: No such file or directory
ls: /usr/local/share/zsh-completions/_git: No such file or directory
-rw-r--r-- 1 werner admin 336270 Dec 21 19:42 /usr/local/Cellar/zsh/5.3.1/share/zsh/functions/_git
lrwxr-xr-x 1 werner admin 56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git
lrwxr-xr-x 1 werner admin 56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git
lrwxr-xr-x 1 werner admin 56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git