Did I say Vim isn't for everyone? I certainly felt that way the first couple of time I tried it. After several failed attempts over the years, I finally made Vim my daily driver. Below I have a couple of tips from my own experiences for people starting out on Vim/Neovim.
Start small, really
Too much too quickly is a common theme in my past failures trying to learn Vim. Only 6 keys are needed to move the caret left (h
)/right (l
)/up (k
)/down (l
), delete (x
) and insert text (i
). It took me 2 weeks to get comfortable with just the aforementioned 6 keys and weaned myself from reaching for the mouse.Use Vim now
There is practically no need to setup Vim for use in terminal or GVim (Vim in a window) initially. Most editor/IDE has a Vim emulation waiting to be enabled.Avoid using it under pressure initially
Professional work is hard enough as is without adding Vim to the mix. I got much more successful when I used Vim on my personal project, which I simply enjoy the experience with what I already knew or add one or two commands in a session. I manage to slowly but steadily expand my Vim muscle memory over weeks this way.Touch typing is important
Touch typing is almost a prerequisite. I have never seen anyone use Vim well without being able to touch type fairly accurately. Weakness in my touch typing flared up when using Vim and I added 5 min of targeted typing exercises at the start of a session until I was comfortable.Experience default key mapping first before customisation
Some advocate promote customisation early on, citing inefficient key mapping creates bad muscle memory, resulting in a long term impact on productivity. However, I find the default key mapping adequate for most tasks, particularly with Neovim. I also don't like to customise until the keymap really bugs me and the keymap I find more comfortable with is not already taken by something useful.
Above are some of what I felt worked for me after a number of failed attempt to learn Vim in the past. I now keep a learning-sheet I made with the commands I want to learn. When I got the command sequence stored in muscle memory I will delete it from my learning-sheet to keep it up to date.
Happy Vim-ming!
Top comments (8)
I have my own list of plugins in Vim, but I was so used to graphical interfaces that, every time when I try to cut and move a long snippet to different place, I feel I cannot do that in Vim well. That's very annoying. :(
But Vim is really fast! Still thinking how to use Vim instead of VSCode.
I think the transition for me is graphical -> shortcut keys -> vim commands. I already knew how to do quite a bit with shortcut keys (like ctrl + c for cut and ctrl + v for paste) before I started vim. Some of my first wins with vim are by replacing the shortcut keys I normally use with vim commands (like x for cut and p for paste). This got me feeling productive pretty quickly.
Great tips, I agree with them all and love Vim as well. For anyone looking to learn I highly recommend the now free Upcase course Onramp to Vim.
It is available here: thoughtbot.com/upcase/onramp-to-vim
They also have a great video on Neovim and Vim 8 as well as one on using the terminal effectively.
What really helped me when I started with vim was to disable arrow keys in .vimrc, took me a couple of days to get used to it, but everything was much easier after that :D
Vim rocks. 10x better and faster than electron-based bloatware like VSCode or Atom.
I agree it is much faster, although I felt the speedup does not completely outweighs the other things VSCode has, like a debugger, and the huge ecosystem of quality extensions. If you work with technology like TypeScript VSCode makes it really nice with all the functionality provided by the language server. Overall I could jump into a file with vim and edit away, I do this with documentation (in markdown) and git workflows a lot. For navigating a large codebase and figuring out what I need to do I would open VSCode/WebStorm.
I've always wanted to use it, but in the end couldn't go trough with it. Currently I use it as git commit message editor and in the terminal, but my daily driver is still VS Code.
I use the VSCodeVim extension in VSCode (marketplace.visualstudio.com/items...) as my daily driver. It isn't perfect Vim but pretty close for most of what I want to do. Once the extension is installed you can toggle vim mode on/off via the VSCode command menu (ctrl + shift + p then type
toggle vim mode
). It should hopefully be less daunting than vim in the terminal.