I write in two languages all day, and Vim has never really forgiven me for it.
The problem is small but it happens a hundred times an hour. I'm in insert mode typing Korean, I hit Esc to go back to normal mode, and now my hjkl and : and / are all producing 한글 instead of commands. So I switch the IME back to English by hand, do my normal-mode thing, press
i... and now I'm typing English into a Korean sentence. Switch again. Every single time.
You learn to live with it. That's the trap. It's annoying enough to notice, never quite annoying enough to fix. I'd half-look for a solution every few months, find some terminal-specific hack or a plugin that only worked in one editor, and give up.
That’s why I’ve decided to build my own solution. It's a tiny macOS menu bar app that watches for Esc globally. The moment you leave insert mode, your IME flips to English. That alone covers Neovim in basically every terminal, VSCode, even Neovim over SSH, with no plugin at all.
The part I actually wanted, though, is the opposite direction: when I press i again, I want the Korean back, but only if I was typing Korean before. A global key watcher can't know that, so there are small editor plugins (Lua for Neovim, TypeScript for VSCode) that snapshot
which IME you were last using and restore it on InsertEnter. Korean comes back if you were writing Korean; English stays if you weren't.
