Unfortunately I've found that vim modes for various editors are good enough to fool you so you keep using them, but not good enough to not frustrate you with the differences. In PyCharm, for example, I have no idea how to use any keyboard shortcuts with vim mode on, since vim then absorbs the keys pressed and I lose all keyboard access to the functionality.

Simply not true. Actually Jetbrains IDEs have IMO one of the best if not the best VIM emulations in all IDEs, IdeaVIM is awesome.

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 r :action Refactorings.QuickListPopupAction (refactor this popup) :map z :action ChangesView.Revert (git revert dialog) :map 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.