Humanity

Edit the world by your favorite way

git diff の出力を畳む Ex コマンド

foldmethod=expr は重いし filetype=diff とかじゃない捨てバッファ(例えば :r!git diff foo...bar して出力を取り込んだバッファ)でもサクッと畳みたいので作った。
:FoldDiff すると現在バッファの git diff の出力を畳みます。

command! FoldDiff call s:cmd_fold_diff()
function! s:cmd_fold_diff() abort
  if getline(1) !~# '^diff '
    1,/^diff /-1 delete _
  endif
  normal! zE
  1
  while search('^diff ', 'W')
    ?^diff ?,.-1 fold
  endwhile
  .,$ fold
endfunction

プラグインとして作るなら foldmethod=expr になるだろうけどデカい diff とかの時つらそう(適当)。
ちなみに上記のコードは git diff 以外、例えば素の diff の出力とか他 VCS の diff とかは試してないので色々適当です。