Mac Terminal: emacs-style command editing messed up
Drop the '\[' and '\]'. They mean "the enclosed stuff doesn't take up display space", and are messing up the count, as you suspected. They are usually used to enclose strings that set the following text color, f/ex.  Without them, the prompt - and emacs editing - will work correctly.

Here's a handy prompt-syntax reference card.