vim-fugitive README

The project's README from github.com/tpope/vim-fugitive. As one markdown file: README.md.

fugitive.vim

Fugitive is the premier Vim plugin for Git. Or maybe it's the premier Git plugin for Vim? Either way, it's "so awesome, it should be illegal". That's why it's called Fugitive.

The crown jewel of Fugitive is :Git (or just :G), which calls any arbitrary Git command. If you know how to use Git at the command line, you know how to use :Git. It's vaguely akin to :!git but with numerous improvements:

Additional commands are provided for higher level operations:

Add %{FugitiveStatusline()} to 'statusline' to get an indicator with the current branch in your statusline.

For more information, see :help fugitive.

Screencasts

Installation

Install using your favorite package manager, or use Vim's built-in package support:

mkdir -p ~/.vim/pack/tpope/start
cd ~/.vim/pack/tpope/start
git clone https://tpope.io/vim/fugitive.git
vim -u NONE -c "helptags fugitive/doc" -c q

FAQ

What happened to the dispatch.vim backed asynchronous :Gpush and :Gfetch?

This behavior was divisive, confusing, and complicated inputting passwords, so it was removed. Use :Git! push to use Fugitive's own asynchronous execution, or retroactively make :Git push asynchronous by pressing CTRL-D.

Why am I getting core.worktree is required when using an external Git dir?

Git generally sets core.worktree for you automatically when necessary, but if you're doing something weird, or using a third-party tool that does something weird, you may need to set it manually:

git config core.worktree "$PWD"

This may be necessary even when simple git commands seem to work fine without it.

So I have a symlink and...

Stop. Just stop. If Git won't deal with your symlink, then Fugitive won't either. Consider using a plugin that resolves symlinks, or even better, using fewer symlinks.

Self-Promotion

Like fugitive.vim? Follow the repository on GitHub and vote for it on vim.org. And if you're feeling especially charitable, follow tpope on Twitter and GitHub.

License

Copyright (c) Tim Pope. Distributed under the same terms as Vim itself. See :help license.

vim-fugitive (tpope/vim-fugitive)

Searching Database…

Что это такое?Fugitive — это обёртка над Git, которая живёт прямо внутри Vim — в README его называют «the premier Vim plugin for Git» (лучший плагин для работы с Git в Vim). Название происходит от слогана самого проекта: обёртка над Git «настолько крутая, что должна быть запрещена».
То есть это плагин внутри моего Vim или отдельная утилита, которую я запускаю вместе с Git?Это плагин, написанный на Vim Script: он загружается в ваш редактор и добавляет команды вида :Git — никаких отдельных программ или сервисов. Он всегда работает с тем репозиторием, к которому относится текущий буфер.
Мне нужно что-то ещё, кроме Vim?Только сам Vim и Git-репозиторий — он работает везде, где работает Vim, и всегда обращается к репозиторию текущего буфера. Поскольку :Git повторяет интерфейс командной строки git, настоящее предварительное условие — умение пользоваться Git в терминале.
Через него работает всё, что умеет Git, или есть пробелы?Пара нюансов: симлинки, которые сам Git не поддерживает, не поддерживаются и здесь, а старая асинхронная версия :Gpush/:Gfetch на базе dispatch.vim была удалена — вместо неё используйте :Git! push или нажмите CTRL-D, чтобы запустить команду асинхронно.
Он бесплатный или есть подвох с лицензией?Бесплатный — распространяется на тех же условиях, что и сам Vim, авторские права принадлежат Tim Pope. Репозиторий живёт на GitHub с 2009 года и набрал около 21,8 тыс. звёзд.
Что он вообще умеет после установки?Главное — команда :Git (или просто :G), которая выполняет любую команду Git: если вы умеете работать с Git в терминале, вы уже умеете пользоваться Fugitive. Если запустить :Git без аргументов, откроется окно со сводкой: изменённые файлы, а также коммиты, которые ещё не отправлены и не подтянуты (наследник команды :Gstatus); команды :Git commit и :Git rebase -i редактируются прямо в вашем Vim, а подробный вывод вроде :Git diff или :Git log загружается во временные буферы.
Как в нём устроены индексация (staging) и просмотр различий?:Gwrite добавляет текущий файл в индекс — он записывает изменения и в рабочее дерево, и в индекс, как git add. :Gread делает отменяемый checkout в буфер, а :Gdiffsplit открывает проиндексированную версию рядом с версией из рабочего дерева, чтобы можно было отредактировать буфер с индексированной версией и записать его, обновив индекс. :GMove и :GDelete — обёртки над git mv и git rm для текущего файла.
Что такое :Git blame?Оно открывает временный буфер с горячими клавишами для разбора истории: нажмите Enter на строке, чтобы увидеть коммит, где она изменилась, или g?, чтобы посмотреть другие сочетания. Без указания имени файла blame выполняется для текущего файла в вертикальном сплите со связанной прокруткой. Кстати, :Gedit HEAD~3:% загружает текущий файл в том виде, в каком он был три коммита назад.
Может ли он открыть файл на GitHub или GitLab?Да — :GBrowse открывает текущий файл в веб-интерфейсе вашего хостинга, при желании с ограничением по строкам, выделенным в визуальном режиме. Поддерживаются GitHub, GitLab, Bitbucket, Gitee, Pagure, Phabricator, Azure DevOps и sourcehut — через сопутствующие плагины вроде rhubarb.vim и fugitive-gitlab.vim.
Creator
tpope
Size
2.6 MB
Stars
21.8K
Updated
CommitMar 07
Age
17y
Commits · 90 Days