Vim
Git
GitHub
neovim

VimでGitの環境を整える

Vimを使っててGitのプラグインを探してて、色々まとめました。

※ 勘違いしていて全部gitgutterの機能だと思ってたんですけど、コメントでご指摘頂いて直しました:bow:

とりあえずインストール

インストールするものは以下のものです。

僕はdeinを使っているので、インストールはこんな感じです。

dein.toml
[[plugins]]
repo = "airblade/vim-gitgutter"

[[plugins]]
repo = "tpope/vim-fugitive"

vim-gitgutterの機能

HEADからの差分を表示

インストールが済んだらGitで管理しているページを開いてください。
ページを開いて、適当に変更して保存すると以下のように行数の横に+や−が表示出来ていると思います。

image.png

次の変更まで進みたいなら ]c、前の変更に戻りたいなら [cで移動することが出来ます。
ショートカットを変更したいなら以下のコードをvimrcに加えてください。

nmap ]h <Plug>GitGutterNextHunk
nmap [h <Plug>GitGutterPrevHunk

fugitiveの機能

Glog

これは git logのコマンドですね。
ノーマルモードで :Glogを実行すると以下のような表示が出ます。
::の後ろは今は消してますが、コミットメッセージが表示されます。
これは単体ではあまり使えませんが次の Gdiffと組み合わせるとこで効果を発揮します。

fugitive:///~/.git//8f3032e5b4b02063e299d8be805d1d81738dc3c4/pages/index.vue::...
fugitive:///~/.git//03a7ecbcbf7f244b9fa031ff67e737823fb18dfb/pages/index.vue::...
fugitive:///~/.git//fae312dd5ff77dbb0e8e974c978f0e803b41796a/pages/index.vue::...
fugitive:///~/.git//2eac7fb5084fe094f20ebd51bbac08649d6e4b08/pages/index.vue::...
fugitive:///~/.git//54e42bdc3acece96f77731180249f9c552c5b124/pages/index.vue::...
fugitive:///~/.git//65d924c0cee3a034cbe03ad2cdeb0d5472fbaf9a/pages/index.vue::...
fugitive:///~/.git//c71cf6d87d123fcc3a4e625f52c535adcf361c16/pages/index.vue::...
fugitive:///~/.git//add95331805cb415d81ce14cfc98d344834a9a01/pages/index.vue::...
fugitive:///~/.git//8067e36a079e9871522a58a64ee02da699874cb3/pages/index.vue::...
fugitive:///~/.git//9e6d8ba9bcfe36266e89cffefcecd8b02d33dd34/pages/index.vue::...
fugitive:///~/.git//f90276408d13eca8c15a4766fcc77514e04a2ea2/pages/index.vue::...

また、 :Glog --onelineとすることによって以下のような短いバージョンの結果を得ることも出来ます!

8f3032e ...
03a7ecb ...
fae312d ...
2eac7fb ...
54e42bd ...
65d924c ...
c71cf6d ...
add9533 ...
8067e36 ...
9e6d8ba ...
f902764 ...

Gdiff

これはgit diffのコマンドを行ってくれるコマンドです。
ノーマルモードで :Gdiffと実行すると以下のようにHEADの状態と現在の状態を比較することができます。
このコマンドを見ることで前の状態との変更を見ながらコーディング出来ます!

スクリーンショット 2018-07-09 13.06.15.png

また、HEADよりも前にさかのぼって確認したいときは Glogをつかって

:Gdiff コミット番号

のように書きます。コミット番号は上で言うと 8f3032e5b4b02063e299d8be805d1d81738dc3c4の部分です。

Gblame

このコマンドを実行すると以下のように誰によるいつどのコミットでの変更なのかを見ることが出来ます。
これは、複数人開発の時によくわからないコードがあった時に誰に聞けばいいかが分かるというとても便利な機能です!
下の画像では一人しかいませんが、、笑

スクリーンショット 2018-07-09 13.38.23.png

Gbrowse

正直僕が一番紹介したいと思ってたのはこの機能です。
GitHubなど複数人での作業で、GitHub上でやり取りをするならこの機能はすごく便利だと思います。
ただし、この機能はもしGitHubを使っている場合はvim-rhubarbが必要となります。

これはリポジトリがGitHubやGitlabなどにミラーされていることを推測し、現在のファイルをブラウザ内のオプションの行選択で開くことが出来ます。
開く方法は簡単でまず、Shift-Vで表示したい行を選択します。あとは :Gbrowseを入力し、開いたページのURLをGitHubのPull RequestやIssueに貼ると以下の画像のような結果が得られます。

スクリーンショット 2018-07-09 13.32.52.png

終わりに

他にも便利なGitの機能がありましたら、コメントなどで教えてください!

参考

15年目のVim