自分はvim-fugitiveとvim-flogを使っている
Plug 'tpope/vim-fugitive' Plug 'rbong/vim-flog'
fugitiveだけでもgit log
は見れるが --decorate
や --graph
などのコマンドを使っても色がつかないのでコミットログを見ることに関しては若干微妙。
ログを見るという単一用途に関してはvim-flogがあったほうがいい。Vimに統合されたtigのような使い心地で非常に便利だと思う。
キーバインディング
基本的には <leader>g
で関連操作ができるように統一している。
nnoremap <silent><leader>gs :Git<CR>:20wincmd_<CR> nnoremap <silent><leader>gd :vert Git diff --staged<CR> nnoremap <silent><leader>gl :vert Flogsplit<CR> nnoremap <silent><leader>gg :Git commit<CR> nnoremap <silent><leader>gw :Git commit -m "wip"<CR> nnoremap <silent><leader>ga :Git add . --verbose<CR> nnoremap <silent><leader>gp :call GitPushCurrentBranch()<CR> " Pushes commits to the branch whose name is the same as we are currently checking out on function! GitPushCurrentBranch() let branch = trim(system('git branch --show-current')) echo "Git pushing to the remote branch... (" . branch . ")" execute ":Git push origin " . branch endfunction
GitPushCurrentBranch
はまあまあ便利で、いまチェックアウトしているブランチを同名のリモートブランチに対してpushできる。
<leader>gs
につけている :20wincmd_<CR>
はウィンドウの高さを制限するコマンド。これがないとgit statusしたときに画面の半分くらいでsplitされてしまって邪魔なので、20くらいにしている。