vimでgitするにはvimagitがおすすめ
年末に知ったvimagitってvimのプラグインが使ってて気持ち良い。
Gitの差分をvimで開けて、行単位でStageしたりCommitできる。
git add -p
するvimmerには特におすすめ!
ちなみにEmacsプラグインのmagitってやつのコピー版らしい。
インストール〜使い方、オススメ設定まで記載しておく。
インストール
NeoBundle 'jreybert/vimagit'
使い方
GitHubのリポジトリにリンクされてるビデオとかを見るとざっくりイメージできると思う。
開き方
:Magit
または <Leader>M
でbufferを開く。
セクション
bufferは以下の5つのセクションに分かれている。
後で記載するけど表示順などをオプションで指定できる。
- info: current branchやHEAD commitのメッセージなどが表示されている
- Commit message: コミットする時に現れて、メッセージを入力する
- Staged changes: そのままだけどStagingされた変更部分
- Unstaged changes: まだStagingされてない変更部分。Untracked filesもここに表示される
- Stash list: Stashのリスト
コマンド
READMEみれば丁寧に書いてあるけど、自分が普段使うものを記載しておく。
command | description |
---|---|
:Magit または <Leader>M | magit bufferを開く。すべてはここから |
S | Stage <-> Unstage の切り替え。ファイル名の上ならファイルごとStageされるし、vで行選択すればその行だけStageされる |
DDD | Unstagedセクションでだけ使える。変更を破棄する |
CC | Commitセクション以外にいるならCommitセクションを開く。CommitセクションにいるならCommitする |
CA | CCのcommit --amendバージョン。直前のcommitに含めるならこれ。 |
CF | commit --amendで、コミットメッセージを変更しない場合はこのコマンド一発で完了 |
R | bufferをrefreshする |
q | bufferを閉じる |
h | help表示のON/OFF |
他にもIやLとか色々あるけど、自分はほぼ使ってない。
オプション
vimrcで指定できるオプション。
option | description | default |
---|---|---|
g:magit_enabled | vimagitの有効[1]・無効[0] | 1 |
g:magit_show_help | ヘルプの表示[1]・非表示[0] | 1 |
g:magit_default_show_all_files | bufferを開いた時にdiffを閉じておく[0]・modified filesのdiffだけ表示[1]・全ファイルのdiffを表示[2] | 1 |
g:magit_default_fold_level | 上記のdiff表示の詳細設定。ファイル名だけ表示する[0]・ファイル名とhunkの一覧だけ表示[1]・hunkの中身のdiffも表示[2] | 1 |
g:magit_default_sections | 各セクションの表示/非表示と順番 | ['info', 'global_help', 'commit', 'staged', 'unstaged'] |
g:magit_warning_max_lines | bufferを開く際にwarningを出すdiffの行数。実際に開くかはyes/noで回答 | 10000 |
オススメ設定
自分がやってる設定と理由を簡単に。
let g:magit_show_help = 0 " 少し慣れたらいらなくなる
let g:magit_default_show_all_files = 2 " わざわざ開くのは面倒なので
let g:magit_default_fold_level = 2 " 同上
let g:magit_default_sections = ['global_help', 'info', 'unstaged', 'staged', 'commit'] " helpはデフォルト非表示。次にcurrent情報。それ以下は上から順に処理していくイメージ
最初のcommitが2015年9月。 READMEにもあるようにまだまだ機能追加されそう。
VimでGitといえばfugitiveだと思うけど、それには無いものをいっぱい持ってるし、併用もアリだと思う!