One part where I always felt (and still feel) that I could improve on my Vim usage, is when moving around. I don’t use the mouse, I don’t use the arrow keys, but for a while now I felt that spamming hjkl to get from one place to another is not really efficient. To be honest, it is kind of easy to just press down jjjjjjj … to move down lines. Went a bit too far? Just kk back. But there has to be a better way.
First off, I installed vim-hardtime to break the habit of spamming hjkl. That plugin limits the number of times one can press hjkl in a set time frame. I have it set up to block me from moving for a second after pressing the same motion twice in a row. jj is OK, but if I want to do jjj, well…
And this gets annoying. I want to edit code, not sit around and wait!
Faster moving around
I know about relative line numbers. I tried using them. And I guess my brain is just not wired in such a way that I could find relative numbers easy to use.
The second plugin I installed is vim-easymotion. It is supposed to make moving around in Vim much easier. There’s a lot of stuff going on in there, it has a lot of features. For now, I use 2 bits from it - jump to anywhere with
to move in lines up and down. I especially like these in visual mode, makes selecting text real nice.
I started using
: more to jump to specific lines,
F to search on the current line,
} to move in paragraphs. I’m also more comfortable with general search with
One other pair of commands that help me reduce spamming jk is
to scroll the window up and down.
Faster working with files
The third plugin I installed is CtrlP. I stumbled upon it in a /r/vim thread and decided to try it out. Up until then I was using NERDTree exclusively to navigate around files and I can’t really remember when was the last time I hit
to open it since I have CtrlP. It’s just amazing to work with files now.
NERDTree still has it’s use cases, for example in a project where I don’t really know what files are in there, but for projects on which I work frequently… Oh boy! Wonderful stuff.
I left the default
for searching for files, but remapped
<tab> to open CtrlP’s find buffer mode.
Other stuff I did to make working in Vim more comfortable…
I set leader to be
. I had it as
, for a long while, but realised that it’s to close on the keyboard to the
. and I kept repeating the last command when I actually wanted to do some magical incantation.
I learned about
:m[ove] to move and
:co[py] to copy lines. Good stuff.
cap pairs are also useful from time to time. They just simply delete, or change, around the current paragraph.
Finally, I added the following bit to my
.vimrc to highlight the current line:
augroup CursorLine au! au VimEnter,WinEnter,BufWinEnter * setlocal cursorline au WinLeave * setlocal nocursorline augroup End
So, that’s pretty much it. I don’t think that I’m super fast navigating around in vim, but it’s definitely better than some 3 months ago.
Next thing I want to tackle is using registers, and especially macros.
And read more of that nice