> having to leave insert mode, move then re-enter insert mode is incredibly tedious

I imagine most of the tedious part is leaving insert mode, which implies reaching for the Esc key. Personally, I have my CapsLock mapped to Esc (with `setxkbmap -option caps:escape`), but there are multiple alternatives, like mapping jj to leaving insert mode, etc.

I actually switch more than necessary, and don't see it as a hassle. It's because I'm thinking of a series of actions and my fingers just translate. Let me give you an example. Let's say that I want to 

1. call `foo`
2. pass it an object
3. prepare to fill that object in a new line

I don't `foo({`<kbd>Enter</kbd>`})`<kbd>Caps</kbd>`O`<kbd>Tab</kbd>.

Instead I do:

1. `foo()`<kbd>Caps</kbd> (call foo)
2. `i{}`<kbd>Caps</kbd> (pass it an object)
3. `i`<kbd>Enter</kbd><kbd>Tab</kbd> (prepare to fill it in a new line)

Maybe I don't see it as a hassle because:

1. I've made it easier to exit insert mode, by using <kbd>Caps</kbd>
2. Typing like that allows me to take advantage that opening and closing braces of all types are right next to each other on a QWERTY keyboard. This also allows me to hit `"` twice in succession when typing strings. It limits how many times I need to move from typing words to "weird" keys.
3. **This is the big one for me**: It better maps editing actions I have in mind to key sequences I need to type. It's like it makes typing more composable. I think this allows me to use muscle memory better when editing text.