2013-06-07 5 views
1

Автозаполнение системы git системы очень хорошее, но не хватает по крайней мере git difftool и git diffmerge. Я имею в виду, что если я типа git diff<TAB> на моей строке, что я получаю следующее:Как выполнить патч git, в котором отсутствует команда difftool

$ g diff<TAB> 
diff   -- show changes between commits, commit and working tree, etc. 
diff-files -- compare files in the working tree and the index 
diff-index -- compare content and mode of blobs between index and repository 
diff-stages -- compare two "merge states" in the index file 
diff-tree -- compare the content and mode of blobs found via two tree objects 

См? Нет difftool или diffmerge есть. Я должен набирать их до конца, чтобы использовать их, или создать некоторый псевдоним git, который я не хочу.

Есть ли способ исправить конфигурацию завершения git по умолчанию, чтобы добавить поддержку этих двух команд? Где сценарий завершения git по умолчанию? Могу ли я изменить его или, еще лучше, исправить его в моем собственном .zshrc или что-то, поэтому мне не нужно испортить оригинал системы?

Если кто-то хочет знать, я использую zsh 4.3.11 на Mac Lion с установленным последним oh-my-zsh. Мой git установлен из homebrew, и это версия 1.8.0.1.

ответ

1

git завершение выполняется автозагрузкой _git. Вы можете переопределить его.

  1. скачать последнюю версию _git от here (используйте сырую ссылку, чтобы получить его).
  2. Поместите его в каталог $fpath, на который вы попадете первым, чем путь отправленных сценариев. print -l $fpath покажет вам список, и вы можете добавить его на передний план, например. добавив fpath=($HOME/.zsh/Completion $fpath) к вашему zshrc. Убедитесь, что изменение $fpath происходит до compinit.
+0

Ни последний файл завершения выше, ни [последний, отправленный в git] (https://github.com/git/git/blob/master/contrib/completion/git-completion.zsh) содержат поддержку для 'diffmerge' еще, только' diffftool'. Хорошая возможность для тех, кто хочет получить патч в zsh и/или git. –