I've tried Vim a few times but got turned off by the slow process of learning the multiple keyboard shortcuts to do a simple task.
I've tried Vim a few times but got turned off by the slow process of learning the multiple keyboard shortcuts to do a simple task.
I used the "learning by doing" approach by forcing myself to use Vim to write C and Python at work.
I had two main reasons for learning Vim: (1) Vim is everywhere, so it must be worth it to learn the basics at least; and (2) modal editing felt easier on my wrists than the standard mouse + shortcuts approach I ended up using in other IDEs.
Here is my advice:
1. Start with only a theme in your .vimrc, so no plugins or non-standard key bindings.
2. Use Vimtutor (or any other tutorial) to learn the basics: normal vs. insert mode, movement, manipulation, yank/paste (+ clipboard), splits, buffers, and searching.
3. As you write code, you will find yourself wanting to know how to do X. This is where Google and a simple "cheatsheet" file come in. Once you find out how to do X via Google, add an entry to your cheatsheet file (example in HTML form: [1]).
4. In many cases, you will find that a plugin will solve one of your issues. Install that plugin and add it to your .vimrc. I recommend vim-plug[2] for managing and installing plugins.
5. There are many useful plugins out there. Two I would strongly recommend: CtrlP[3] and NERDTree[4].
Once you have a good grasp of Vim, I would recommend exploring Emacs + Evil-mode if you want a more complete IDE experience.
[1]: https://assil.me/2018/11/12/vim-cheatsheet.html
[2]: https://github.com/junegunn/vim-plug
In short: macros: I can turn a column of text values into a single line of a json array with a few strokes. Also more complicated formatting that has some pattern like:
var some-column = 1;
var some-columntwo = 2;
Into formatted SQL queries or inserts, or more json with little effort. Not an issue with 2 columns, but with a hundred....Interaction with the shell: I can do the above with curl or reading from a file so I don't have to leave the editor and download and open the file separately.
Helm: https://tuhdo.github.io/helm-intro.html Fuzzy searching of anything: emacs help files, man pages, your code, your code function/class/variable names.
Magit: I generally hate git interfaces but this one is pretty good and allows commit, merge, rebase, and interactive adding seemlessly.
org-mode/org-babel: Note keeping to automatically create tickets in my help files and keep my place where I am. Execute code inline as a test.
- It's already 99% configured
- The keyboard shortcuts are mnemonic
- There is a UI display of all the shortcuts within one keystroke at any given time
- You can still function with your mouse -- if you need to