I'm also a Vim user, and this bit stuck out to me somewhat:

The problem with modes is that you are not constantly aware of
the current mode, which leads to errors: you want to draw a line,
but accidentally create a gradient fill.

In Photoshop, where it is somewhat difficult (at least it was for me anyway) to understand which mode you were in at any given point, this kind of problem does exist. But hypothetically, suppose you could always be aware of which mode you were editing in? Would modal interfaces still pose the same sorts of problems?

I definitely agree with Ilya on his assertion that modal interfaces are bad news when other factors of the situation require you to not pay attention to the interface, for example a car's computer or a mobile phone. I find it incredibly frustrating when the interface I'm forced to use is giving me shit, because it jeopardizes my safety while driving. I've learned over the years when to just "put it down", and to always have backup CD music in my car in case my lovely iPhone which can play any track ever made (if I have a decent LTE connection) decides that it's just not going to do that today. In most situations, it seems that a modal or even timed-modal user interface is not what you want, and certainly not the most efficient use of brainpower for your device.

On the other hand, given that someone is aware of his mode at all times, modal interfaces do give an extraordinary level of efficiency to even simple interfaces. Ilya's "TV Remote" analogy is a perfect example of this. A remote isn't something you need to use while in motion, nor is it typically something that is lunged for, grabbed, and acted upon very quickly as a response to something insane happening around you (like a gun, for example). I think it would be preferred to have a remote with less buttons and more modes, with very clear ways of knowing which mode you're in. The vim-powerline plugin (for my favorite text editor) is a perfect example of this, I can know what mode I'm in simply by being aware of the color of the bottom bar in Vim. It would require devices with far less complexity, instead of needing a dedicated control for each and every action you take.

I think Native Instruments' MASCHINE, a groovebox and hardware/software production studio, does a very good job with this. There are few times, except early on, where you are unaware of which mode you are in. It was designed for live performance as well as home studio usage, so its interface is very simple, yet very complex at the same time. It has dedicated controls for parts of the song that always need to be adjustable (for example, volume/tempo/swing control), and defaults to "performance mode" where the easiest thing to do right off the bat is start banging out beats or melodies. There are other "edit modes" which let you write new parts in a step sequencer, record live beat mashing or sample-fuckery, and adjust effect processing for damn near everything, but access to these modes require a level of "intent", wherein you need to definitely know you're in that mode. It's also very easy to see when you're in a given mode, because the dual LCD interface is so simple that it's very easy to tell that you're in the wrong place.

Wow, that was a lot. Sorry if it's a big mash of paragraphs but I really am fascinated with UI and UX creation.