I've basically adopted Visual Studio Code as my Git UI (using a bunch of extensions, most relevantly Git Graph, gitflow, and GitLens) at work and at home. It works surprisingly well, but sometimes I realize I need to break my work up into a few commits. This usually works perfectly well in VSC, simply committing a few ranges in a file at a time.
However, sometimes Git gets mixed up and breaks up the ranges in a way that doesn't let me do this. For example, I may have two operations I wish to commit while leaving another nearby change off the index. In this case, Git may define the changes as two ranges: one range for one operation and another combining a desired and an undesired change. If I then commit part of the second range, Git will often modify the index incorrectly, overwriting more or less than I wanted.
At home, I can solve this by using SmartGit's Index Editor. I can select the file I want to commit parts of, open the Index Editor, and then manually perform the change to the index and commit.
However, I haven't figured out how to do this in VSC (or any other GUI, to be honest). Is this possible or is it some SmartGit secret sauce?