I\'m most often finding myself having to work with plain old vi on minimalistic terminals that tend to act differently than the vim on big distros, and so the behavior trips me
The normal mode command for entering insert mode at the end of the line is A
.
More generally, i
enters insert mode before the current character so what you get is perfectly in line with what you do: $
puts the cursor on the last character and i
enters insert mode before the last character. That's what you ask Vim to do and that's what it does.
If you want to enter insert mode after the current character, the right command is a
so what you should have done instead of $i
(which can't do what you want, whether you are in vi or vim) is $a
for which there is a cool shortcut: A
.