Becoming better at Vim

Vim

Vim Problem Overview


I've been using Vim for quite a long time, but I'm at a level where I use insert mode most of the time, and I still use the arrow keys to move around(!).

I feel like I'm not getting the best out of my lovely editor, particularly regarding navigating (especially code), copy & pasting, and doing other manipulations of existing code. (though I am quite comfortable with complicated search/replace patterns).

  • How should I go about learning more?
  • What resources would people recommend?

Vim Solutions


Solution 1 - Vim

"Why, oh WHY, do those #?@! nutheads use vi?" is a nice introduction to "the Vim way", especially about text objects which are one of the most defining features of Vim.

Solution 2 - Vim

Here are some awesome screencasts that should give you an idea of what to learn next. There are also videos for intermediate and advanced topics, but the novice ones are in fact the most important.

Also, when I felt that I was stagnating and not really learning "the Vim way", I chose to disable arrow keys in both normal and insert mode. This forces you to use ESC to get somewhere, and makes you think more Vim-like. Ultimately, I enabled arrow keys again in insert mode, but I hardly ever use them. There is, most often, better ways to get around.

map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>

And especially

imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>

Solution 3 - Vim

  1. type vimtutor on the command line
  2. go into vim, type :help or <F1>
  3. subscribe to mailing list
  4. official vim docs

Solution 4 - Vim

Two more tips:

  • Use Vim for editing everything (email, web forms, code, ...). When something feels slow, there is probably a quicker way to do it. :helpgrep is your friend.

  • Head over to http://vimgolf.com/ and compete. I've learned many tips and tricks that way. [Disclaimer: No responsibility is accepted for the long periods of time that "go missing" while competing at VimGolf].

Solution 5 - Vim

An interesting article by Bram Moolenaar himself: Seven habits of effective text editing.

Solution 6 - Vim

This is how I've learned Vim (and a bunch of other things). It's pretty easy.

Browse the help documents and find a command for something you do all the time. Delete a whole word for example. Make it a point to remember this.

Now, the next time you find yourself hitting 'xxxxx' to delete a word, stop, put it back and use the new command. Look it up if you have to. So instead of hitting 'xxxxxx' you go back and hit 'dw'.

Do this over and over, it'll be slow at first but eventually it will stick.

Once you have that command down start at the top. Find another command for an action you do all the time...

You would be surprised how fast you can pick up new commands and techniques this way.

Solution 7 - Vim

Remapping/disabling the arrow keys as has been suggested is a great way to force yourself not to use them.

Another thing to consider: if hitting Esc on your keyboard is at all uncomfortable you might wish to remap Caps Lock to Esc in your OS. For me this was a hugely helpful step, as Esc is an awkward reach on my KB and that was another obstacle that kept me in Insert mode (as it was hard to get out). Having Esc on Caps Lock makes it a tiny reach and jumping in and out of Insert mode is very fast.

For learning advanced stuff in Vim the best resource is the :help, but for getting the basics down you just need to do it; it's muscle memory more than anything. You say you know search. Consciously use it as a navigation tool. The searches [/, ?] and the inline char based searches [f, F, t, T] are some of the key Vim nav tools. Just use them; comboed with the disabled cursor keys you'll be navigating on muscle memory alone in no time.

Text Objects. Easily one of the best features of the editor. This is the other thing to immediately consciously practice. Things like 'yiw', 'dit', etc. are so powerful and fast; learning and making use of them alone will make you feel like a Vim user.

Once you've got text objects and basic navigation down, then it's time to move on to reading and learning from the :help regularly and scouring the web for awesome plugins. Seriously, you can use Vim for years and have an "ah ha!" moment accidentally stumbling on some obscure tidbit in the :help you'd never known.

Solution 8 - Vim

Solution 9 - Vim

Solution 10 - Vim

> How should I go about learning more?

Read vim manual completely (type :h; you can browse from there). This is how you get to know all of the movements and commands. That's most useful if you already know the basics and want to improve.

> What resources would people recommend?

vim.org, look through the most popular vim scripts. Check sources of them if you find something of interest. Or just install them and enjoy. That site comprises a lot of links to scripts that help browsing source code in different languages; and it is relatively easy to find them there.

StackOverflow.com also might be of help.

Solution 11 - Vim

I made this game to help my nephew learn, but it only works on Firefox and Chrome >.< http://kikuchiyo.org

For now, it just deals with movement and entering insert mode. Beta version allows you to attack enemies with light-saber, 'i' to the left, and 'a' to the right :P

Keep trying to learn Vim, it's worth the effort!

:)

Solution 12 - Vim

Solution 13 - Vim

> I still use the arrow keys to move around(!).

I don't see a problem with this.

Frankly, what's the probability that you'll have to use vim and a keyboard that lacks arrow keys?

You know, most people use vim because it does the job (oh well, because they mastered it to a level when it does the job for them), not for being elitists (like not using the arrow keys).

A couple of advices for improving your vim knowledge:

  • periodically open the vim help at a random place and read about a random distinct feature. It will take you a couple of minutes. It's possible that you won't use this feature during next X years. But if you are lucky, you'll be in a situation when you'll see that you can apply your knowledge about that feature to achieve a certain task. You'll open the help again to refresh your memory. After using the feature in practice for a couple of times, it'll stick. At this point your vim knowledge will be improved.
  • use :helpgrep to dig into random places of documentation. If you need to do something and you find the place that explains it in the docs, don't stop there. Read the doc snippet one more time. Find the keywords. For each keyword, use :helpgrep keyword to discover the logical links with other parts of the vim documentation.

Solution 14 - Vim

I take a look at this list of Best of VIM Tips every now and then and I still pick up new tricks on a regular basis.

Solution 15 - Vim

the way I stopped using the arrow keys was not disabling them (I still use them in Insert mode) but if you think about it if you want to go right use your pinky finger which is the l key, go left Index finger the h key, & ring finger up ("ring up") the k key & "pick down" the j key.

So first of the four digits on your hand (forget about the thumb) the Index one is leftmost & the Pinky is rightmost. Use the expression "ring up" as in telephone call for up with your ring finger & the middle finger has nowhere else to go but down.

It also helps a lot I found to forget about what the keys are named (h, j, k, l). There isn't a good mnemonic for remembering them that way that I've found & there's not too many mappings using those keys either.

Solution 16 - Vim

Solution 17 - Vim

I think videos are very helpful in learning.

  1. Derek Wyatt's on vimeo
  2. vimcasts

Solution 18 - Vim

1- read this

2- if you use a rss reader subscribe to these pages

page 1

page 2

Solution 19 - Vim

http://www.vi-improved.org/tutorial.php <-- you should read and flowing this chat, it's very useful for beginner. Happy vimmer

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJamesView Question on Stackoverflow
Solution 1 - VimMatteo RivaView Answer on Stackoverflow
Solution 2 - VimSarahView Answer on Stackoverflow
Solution 3 - Vimghostdog74View Answer on Stackoverflow
Solution 4 - VimJohnsywebView Answer on Stackoverflow
Solution 5 - VimPaolo TedescoView Answer on Stackoverflow
Solution 6 - VimDennis HostetlerView Answer on Stackoverflow
Solution 7 - Vimnumbers1311407View Answer on Stackoverflow
Solution 8 - VimKonrad GarusView Answer on Stackoverflow
Solution 9 - VimPierre-Antoine LaFayetteView Answer on Stackoverflow
Solution 10 - VimP ShvedView Answer on Stackoverflow
Solution 11 - VimkikuchiyoView Answer on Stackoverflow
Solution 12 - VimAlex BudovskiView Answer on Stackoverflow
Solution 13 - VimAlex_coderView Answer on Stackoverflow
Solution 14 - VimBrian RasmussenView Answer on Stackoverflow
Solution 15 - VimphildobbinView Answer on Stackoverflow
Solution 16 - VimthegeekView Answer on Stackoverflow
Solution 17 - VimSergioAraujoView Answer on Stackoverflow
Solution 18 - VimalivaView Answer on Stackoverflow
Solution 19 - VimJames View Answer on Stackoverflow