I feel the same way. vim is optimized for editing text rather than writing new text. The assumption is that we are editing existing text more often than writing new text when coding.
I don't even remember how to do this common things, if not in vim. How do you swap two lines? Something like "Home", "Shift+End", Ctrl +X", "Up", "Ctrl + V"? Or with the mouse?