読者です 読者をやめる 読者になる 読者になる

もた日記

くだらないことを真面目にやる

Vimメモ : vim-gitgutterで差分を左端に表示する

Vim Git

vim-gitgutter



github.com

vim-gitgutterというプラグインを使うと、Gitで管理しているファイル編集時に差分を表現する記号が左端に表示されるようになる。 ~が変更があった行、+が追加行、-が削除された行があることを示す。

f:id:wonder-wall:20160326201830p:plain


インストール


NeoBundleの場合は下記行をvimrcに追加。

NeoBundle 'airblade/vim-gitgutter'


使い方


インストールが完了すればデフォルトで有効になっているので設定を特に追加しなくてもよい。有効無効の切り替えは下記コマンドで可能。

:GitGutterToggle

また、下記コマンドを実行すると行ハイライトの有効無効が切り替えられる。

:GitGutterLineHighlightsToggle

起動時に行ハイライトを有効にしたい場合は下記行をvimrcに追加。

let g:gitgutter_highlight_lines = 1

f:id:wonder-wall:20160326202933p:plain

記号更新のタイミング


記号が更新されるタイミングは下記とのこと。

  • タイピング停止時
  • バッファ切替時
  • タブ切替時
  • GUIフォーカス時
  • バッファにファイル読込時
  • バッファ保存時
  • Vim以外でファイル変更時

このうちタイピング停止時から反映されるまでの時間はデフォルトでは4000ミリ秒なので、速くしたい場合は下記設定をvimrcに追加。

set updatetime=250


カスタマイズ


記号を表示しているカラムの背景色変更

let g:gitgutter_override_sign_column_highlight = 0
highlight SignColumn ctermbg=brown

記号の変更

let g:gitgutter_sign_added = 'xx'
let g:gitgutter_sign_modified = 'yy'
let g:gitgutter_sign_removed = 'zz'
let g:gitgutter_sign_removed_first_line = '^^'
let g:gitgutter_sign_modified_removed = 'ww'

記号の色を変更する場合は、

GitGutterAdd          " an added line
GitGutterChange       " a changed line
GitGutterDelete       " at least one removed line
GitGutterChangeDelete " a changed line followed by at least one removed line

これらのハイライトグループを下記のように設定する。

highlight GitGutterAdd ctermfg=blue ctermbg=brown

線のハイライト色も同様な設定。

GitGutterAddLine          " default: links to DiffAdd
GitGutterChangeLine       " default: links to DiffChange
GitGutterDeleteLine       " default: links to DiffDelete
GitGutterChangeDeleteLine " default: links to GitGutterChangeLineDefault, i.e. DiffChange

f:id:wonder-wall:20160326210448p:plain

ハンクの操作


]cを押せば次のハンク(変更点のかたまり)へ、[cを押せば前のハンクへ移動できる。キーマッピングを変更したい場合は以下のように設定。

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

また、ハンク内で<Leader>hsを押すと変更をステージでき、<Leader>hrを押せば変更を元に戻せる。キーマッピングを変更したい場合は以下のように設定。

nmap <Leader>ha <Plug>GitGutterStageHunk
nmap <Leader>hu <Plug>GitGutterRevertHunk

<Leader>hpを押すと変更点をプレビューできる。キーマッピングも同様に変更可能。

nmap <Leader>hv <Plug>GitGutterPreviewHunk

実践Vim 思考のスピードで編集しよう!

実践Vim 思考のスピードで編集しよう!