My go-to example for strong support is emacs' evil-mode¹, it takes a lot for it to break down. For example, it even supports things like the expression register² but then requires an elisp expression.
1. https://bitbucket.org/lyro/evil/wiki/Home 2. https://vimhelp.org/insert.txt.html#i_CTRL-R_%3D
Edit: I'm pointing out where it has fallen down for me, not complaining that the devs haven't implemented a full vimscript interpreter to attach to that binding. I love evil.
For example, you can have your own custom "vimrc", they call it ".ideavimrc" which can also read your normal .vimrc but I prefer to keep it separate.
Once in the .ideavimrc, ideavim has emulation for probably the most popular vim plugin (vim-surround) and also vim-multiple-cursor and commentary.vim plugins, you just have to enable them... set surround, etc... see more at: https://github.com/JetBrains/ideavim
But to me the best part of it is doing my own keymappings to execute IDE actions which sometimes don't even have a shortcut or menu and are just accessible by "mouse"
you can do stuff like:
:map <leader>r :action Refactorings.QuickListPopupAction<CR> (refactor this popup) :map <leader>z :action ChangesView.Revert<CR> (git revert dialog) :map <leader>f :action Tool_External Tools_Flake8 (run flake8 external tool)
supports imap, vmap as well in case u just want to trigger in those modes.
etc... this will let you use the ANY IDE action with just the keyboard and most dialogs in jetbrains IDE support CTRL+N/P for next/prev navigation in panes... not to mention you can filter most of them just by typing whatever
The fact IdeaVIM exists is probably the biggest reason I use and pay for Jetbrains IDEs, all the VIM goodness + IDE convenience.