V, 25 26 25 bytes
1 2 bytes off thanks to @DJMcMayhem
òC()Pé
%llòÍî
òF)%r[r];
Try it online!
Borrowed some of @udioca's ideas. Also finally used the surround plugin included in V for an answer, although it may not have been the best way, who knows. The plugin does NOT want to be used.
He...
oh got it. that seems like there could be a more obscure case where I want to do it in command mode and have it work the new way but that's probably not going to happen
The nice thing about making it ç^/ is that it works SLIGHTLY differently which is sometimes useful. IE you can do the ç^/m0 trick to reverse everything
@DJMcMayhem I'll add the increment ascii unfleshed idea to "V Features". Unrelated, duplicate still has a small bug. When you run <count>äl in the middle of a line, the cursor jumps to the end of the paste, but if you run it at the end, the cursor is one char away from the end Try it online!
@DJMcMayhem Something that might be useful: incrementing and decrementing codepoints. We can't do <C-M-a> because that apparently does nothing, but there are enough alphabet challenges that being able to go from a to b with a keystroke could be useful
@DJMcMayhem at least in my vim (GVim 8 Windows) v| doesn't include the letter I'm on, so $v|d leaves the last letter, where it would delete the whole line in V
@DJMcMayhem I've noticed in V that d| and v|d behave differently, and mostly that v|d is different than doing v|d in vim Try it online! is that a setting or something? (that v selects what it's currently on)