Vimprovements
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
and
and
to move in lines up and down. I especially like these in visual mode, makes selecting text real nice.
I started using :<line_number>
more to jump to specific lines, f
and F
to search on the current line, {
and }
to move in paragraphs. I’m also more comfortable with general search with /
and ?
.
One other pair of commands that help me reduce spamming jk is
and
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.
Misc
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.
dap
and 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 :help holy-grail
.