[HN Gopher] Show HN: difi - A Git diff TUI with Neovim integrati...
       ___________________________________________________________________
        
       Show HN: difi - A Git diff TUI with Neovim integration (written in
       Go)
        
       Author : oug-t
       Score  : 43 points
       Date   : 2026-02-03 13:47 UTC (9 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | oug-t wrote:
       | Personally speaking the git diff command is great for output, but
       | can be improved for reviewing.
       | 
       | With difi the TUI made for git diff it allows to me speed up the
       | review process and make it more enjoyable.
       | 
       | For the nvim integration, there already exists diffview and code
       | diff, but I still favors the github website's solution of
       | highlighting + and - inside one file rather then side by side.
       | 
       | difi: https://github.com/oug-t/difi difi.nvim:
       | https://github.com/oug-t/difi.nvim
        
         | fish55 wrote:
         | diffview.nvim also supports side by side view. Lazygit does as
         | well, and opens files in $EDITOR.
        
       | yearolinuxdsktp wrote:
       | Reminds me of `tig`, which is a TUI with a continuous diff (not
       | side by side) viewer... you can revert chunks inline. Has tree
       | view, diff view and blame view.
        
         | oug-t wrote:
         | Yes tig is awesome!
         | 
         | I am also trying to add integration for this TUI with nvim
         | `diffview` and `codediff` support.
        
         | WorldMaker wrote:
         | git itself also has the lesser known `git add --patch` (or
         | `-p`), the interactive staging tool (not to be confused with
         | `git add --interactive` or `-i`, which does add more
         | interactive tools but has a much more complex TUI that doesn't
         | start from diffs).
        
           | OJFord wrote:
           | It really should be the default, with the current 'git add'
           | behaviour behind '--the-whole-damn-thing-i-dont-care-what-
           | the-diff-is'.
        
             | WorldMaker wrote:
             | Yeah, one of the things I miss most from darcs was that
             | being the default experience and also the only step in
             | change creation (`darcs record` versus `git add -p; git
             | commit`; darcs also had a `darcs add` but it was to opt-in
             | source files to status tracking, a reverse of the
             | `.gitignore` opt-out approach).
        
           | oug-t wrote:
           | Totally agreed!
           | 
           | Brining `git add -p` style staging into the UI is definitely
           | something worth thinking about.
        
       | nesk_ wrote:
       | One recommendation to help this tool gain traction: use a black
       | and white terminal for your terminal preview (GIF).
       | 
       | 1. It will ease reading. It's currently terrible, you might be
       | used to it but we aren't.
       | 
       | 2. It will sharpen the text and make it easier to read since
       | there's less to encode into the GIF format.
       | 
       | Additional recommendations: remove the useless part on the right
       | --I use Arch BTW vibe--and make the font bigger.
        
         | oug-t wrote:
         | Great advice!
         | 
         | I will update it now.
        
         | junkblocker wrote:
         | "What is that, a gif for Ants?"
         | 
         | It's really hard to see what is going on in that small blurry
         | demo gif. So please make it bigger in addition to parent's
         | suggestions.
        
           | oug-t wrote:
           | I am so sorry for that gif, just updated it!
        
       | freedomben wrote:
       | Looks like a neat tool, and one I really need! I actually started
       | building my own because I couldn't find anything satisfying. My
       | build is currently in the very early stages and I'd love to
       | abandon it :-) I'm definitely going to try difi out.
       | 
       | Also kudos for putting up a screenshot. I've looked through a lot
       | of projects claiming to do similar to this, but there are so many
       | different interpretations that can make it not a good fit for me,
       | and when there aren't any screenshots the barrier of seeing it in
       | action is often too high to where I only try one or two before I
       | give up and stop wasting time. Having a screenshot made it so I
       | could check it out quickly.
       | 
       | The screenshot _is_ a little rough, so a few tips for next time:
       | 
       | 1. Shrink your terminal window down a bit as a huge view is
       | harder to follow
       | 
       | 2. Keep the screenshots at full resolution so they are easier to
       | read. The reduced resolution and the original screen being huge
       | makes the text pretty difficult to read, even zoomed in to 200%
       | 
       | 3. Use something like screenkey (or throw some subtitle text up
       | or something) so the viewer knows what keys you are pressing
       | and/or what you're trying do. It's pretty hard to follow along
       | without those cues.
       | 
       | Great work, and thanks for sharing!
        
         | oug-t wrote:
         | Thank you for those great advice!
         | 
         | I will definitely refine my screenshot demo!
        
           | freedomben wrote:
           | Awesome, looks fantastic! Thanks
        
       | oug-t wrote:
       | Curious to hear thoughts on editor support, do you guys feel
       | specific integrations (Emacs/Vim) are necessary for tool like
       | this, or the TUI work flow is enough?
       | 
       | Now it mainly supports `nvim`.
        
         | jlarocco wrote:
         | Sorry to be a wet blanket, but Magit for Emacs already has a
         | convenient UI for reviewing diffs (as well as viewing status,
         | logs, rebasing, etc.), so I don't know if I personally would
         | use this tool from Emacs.
         | 
         | But it wouldn't hurt to have an option to make "e" to open
         | files in Emacs or the user's choice of editor.
        
           | oug-t wrote:
           | Thanks for sharing that information!
        
         | kalterdev wrote:
         | I think that regular black-and-white /bin/diff is solid for
         | that kind of job. I use it all the time. I have seen people
         | being mad about reading its output but I think that this
         | attitude is unfounded.
        
       | vhantz wrote:
       | In the readme there are only commands explicitly running the
       | tool. Can it be set as the diff tool for git? If not, you should
       | look into that. It will help adoption. And if yes, you should
       | make it clear in the docs.
        
         | oug-t wrote:
         | Great advice, I will look into it!
        
           | oug-t wrote:
           | I add it inside a new section `## Git Integration`, thank
           | you!
        
       | xyzzy_plugh wrote:
       | For vim heads also worth checking out tpope's fugitive:
       | 
       | https://github.com/tpope/vim-fugitive
       | 
       | Very useful for inspecting and staging changes, making commits,
       | etc.
       | 
       | I find you can pretty much do anything with it, and it's much
       | faster than anything else, but it does have a slight learning
       | curve. The documentation is very good!
        
         | oug-t wrote:
         | Yes, fugitive is awesome!
         | 
         | I use it all the time for staging changes and commits in nvim!
        
         | mbsa7 wrote:
         | This looks promising, thank you. I always used GitGutter and
         | having to remember ": GitGutterDiffOrig" just to see my changes
         | is a pain sometimes, this plugin seems more intuitive.
        
           | VTimofeenko wrote:
           | Check out whichkey and/or command line completion to find
           | those commands easier
        
       | theappsecguy wrote:
       | Would love if this was something capable of doing PR reviews with
       | comment threads, etc! Super tired of having to open up Intellij
       | to get the only usable option for that kind of flow
        
         | oug-t wrote:
         | Great point! I personally likes gh-dash for PR management.
         | 
         | I will definitely try to find a integrated work flow between
         | those two!
        
           | theappsecguy wrote:
           | I love gh-dash, but like you said it's more in the realm of
           | PR management rather than a fluid PR review tool!
        
             | oug-t wrote:
             | Yes! After using gh-dash, I came up the idea to create this
             | tool with Bubbletea to work along with gh-dahsh.
        
       | kolja005 wrote:
       | Hey pretty cool! I recently added a similar feature to my neovim
       | setup. I can press a keymap and cycle through all of the unstaged
       | git hunks with each shown in a preview window. I can also change
       | the base branch to one that, say, I'm trying to merge into so
       | that I can have the same workflow when doing code reviews.
        
         | oug-t wrote:
         | That sounds like a killer workflow!
         | 
         | For pure speed on small PRs, your setup sounds perfect!
        
       | manescianera wrote:
       | Looks neat! Any chance to integrate delta with it?
       | 
       | https://github.com/dandavison/delta
        
         | nickjj wrote:
         | Delta is great.
         | 
         | Fortunately you can create a git diff TUI using `fzf` and `git
         | diff` with pretty much a 1 line shell script.
         | 
         | For example:
         | https://github.com/nickjj/dotfiles/blob/master/.local/bin/gd
         | 
         | If you run `gd` or `gd --side` it will show you a diff.
         | 
         | Delta can be used as a git diff tool by configuring your git
         | tools, such as:
         | https://github.com/nickjj/dotfiles/blob/master/.config/git/c...
        
           | manescianera wrote:
           | I'm using fzf time to time but for some reason never thought
           | of setting up git diff like that. Thanks, I think I will
           | borrow this :)
        
         | oug-t wrote:
         | Delta looks beautiful!
         | 
         | I will definitely try to integrate it with `delta`.
         | 
         | Now `difi` is enabling interactive feature when for letting
         | user to see the changes directly inside editor with nvim
         | plugins. `delta`'s outputs formatted ANSI text is also very
         | interesting to integrate!
        
       | verdverm wrote:
       | https://github.com/jesseduffield/lazygit
       | 
       | Full featured, also written in go, if that sort of thing matters
       | to you
        
         | oug-t wrote:
         | `lazygit` is incredible, it is definitly the gold standard for
         | full git management in the terminal.
         | 
         | `difi` focuses for a much simpler review workflow, a TUI for
         | `git diff`.
         | 
         | Thanks for sharing!
        
           | verdverm wrote:
           | how is it simpler?
           | 
           | 1. It looks an equivalent diff experience as lazygit
           | 
           | 2. As soon as I need to do something more than `git diff`, it
           | becomes more complex (by nature of needing multiple tools to
           | get my job done)
           | 
           | A minimal tool in itself does not confer greater simplicity
        
           | halostatue wrote:
           | I primarily use lazygit for diff/patch editing as I'm
           | preparing PRs so that commits are in a useful order for
           | reviewers (at least those who choose to go commit-by-commit).
           | 
           | Aside from the fact that I've built workflows for lazygit
           | related to patch editing, the main issue I'd have with `difi`
           | is I use vim and won't use nvim (which should have the
           | tagline "not vim", not "neo vim", because it's _not_ vim in
           | very important ways).
        
       | pure-orange wrote:
       | very nice, lovely tui. Does it support viewing the diff of
       | unstaged files? I tend to do a lot of commit amending locally so
       | would be nice if I could see the status of these before I amend
       | the commit
        
         | oug-t wrote:
         | Thanks! Great point.
         | 
         | Now it defaults to comparing current branch vs `main` for PR
         | review, but I will definitely see the value in a `local
         | changes` mode for pre-commit checks!
        
       | LysPJ wrote:
       | Looks nice! Any chance of a side-by-side mode?
        
         | oug-t wrote:
         | Definitely, I will try to do a TUI integration with `diffview`
         | anad `codediff` which supports beautiful side side mode.
         | 
         | Thank you!
        
       | lasgawe wrote:
       | This looks really cool. I need to try it. Previously I used
       | Sublime Merge for diff issues.
        
         | oug-t wrote:
         | Thank you ~
        
       ___________________________________________________________________
       (page generated 2026-02-03 23:02 UTC)