UsePlugin 'vim-fugitive' " DiffRev command " https://github.com/tpope/vim-fugitive/issues/132#issuecomment-290644034 let s:git_status_dictionary = { \ "A": "Added", \ "B": "Broken", \ "C": "Copied", \ "D": "Deleted", \ "M": "Modified", \ "R": "Renamed", \ "T": "Changed", \ "U": "Unmerged", \ "X": "Unknown" \ } function! s:get_diff_files(rev) let list = map(split(system( \ 'git diff --name-status '.a:rev), '\n'), \ '{"filename":matchstr(v:val, "\\S\\+$"),"text":s:git_status_dictionary[matchstr(v:val, "^\\w")]}' \ ) call setqflist(list) copen endfunction command! -nargs=1 DiffRev call s:get_diff_files()