Some things that helped me to become a lot more efficient:
- Vim. Since you mostly edit code, not write it, it is reasonable to be in the editing mode by default, with a full keyboard of shortcuts you can use, not only ctrl/alt combinations. I use IdeaVim[1] plugin for Vim emulation.
- Never use your mouse. Keyboard actions are faster and more consistent once you get used to it. IDEs and editors are highly customizable and should allow to bind almost any action.
- Get rid of tabs, keep 1-3 active buffers in your vicinity. And then use ctrl+tab or ctrl+e to switch between them.
- Learn tricks for code navigation: jump to definition/usage/implementation, search file/class/symbol.
- Learn tricks for text navigation: pretty much any decent tutorial on Vim navigation will do.
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.
It IS much better than when I tried it. It parses your vimrc with and matches simple patterns to support the subset of features it does support but it doesn't really have an interpreter although one was discussed
https://youtrack.jetbrains.com/issue/VIM-669
Which means no plugins for example or complex viml. Presumably this would simply be ignored not broken.
Another approach for a different environment that seems more interesting https://github.com/lunixbochs/ActualVim I don't use sublime so I can't report on how optimal it is the idea of using an embedded vim instance is certainly interesting.
Plain Vim does not have the semantic / refactoring capabilities of a real IDE. This plugin gives the best of both worlds.
Granted, I am not yet a hardcore Vim user, so I've been trying to get there via using the IdeaVim[1] plugin with whatever JetBrains IDE I happen to be working in. It seems like the best compromise presently.
I may be working in Visual Studio soon, so VS + Resharper + VsVim should be interesting.