← Back to context

Comment by yottamus

17 hours ago

    git difftool --tool=vimdiff

I wrote a script that takes two git commits and opens all changed files in vimdiff tabs side by side. I find lots of things too hard to see in github gui. It depends one [tpope's vim-fugitive].

[tpope's vim-fugitive]: https://github.com/tpope/vim-fugitive

I'll paste it next time I'm on that machine.

I personally find vimdiff a bit harder to navigate for my usecase. The reason is that I am context unaware of the file often in larger projects and wanted something that allows me to check all lines in a touched file. However, I have to admit vimdiff comes quite close to what I need and is a great tool!

  • zr?

    vim folds are fully programmable. For me a bigger issue was git calling vimdiff for each file, which I fixed with my own difftool: https://gist.github.com/PhilipRoman/60066716b5fa09fcabfa6c95...

    • I ran in to a couple problems when trying that script (details below), but I'm really happy that you shared it, because I had not seen ':windo diffthis' before, and that method of scripting diffs. I'll definitely be customising it!

      (I found that my mac machine doesn't support the '-printf' option, and also I was attempting to run 'git bvd main' on a branch but it seems it does a recursive directory diff, so I'll use 'git diff --name-only' as the input to the awk command).

      Edit: worked nicely! I haven't used tabs much in vim so is a slightly new workflow but otherwise very handy

    • > For me a bigger issue was git calling vimdiff for each file,

      If you configure vimdiff as the difftool in your git config, just doing a `git diff` would show you the diff for each file sequentially.

but is it blazingly fast?

  • if its not in Rust or browser-based or a "cloud" service or the result of multi-GWH of LLM "training" or a VSCode plugin or ideally all of the prior then the HN kids wont be interested :-)