DEV Community

You're using Vim Wrong - Relative Line Numbers

Arthur Zhuk on October 28, 2020

Learning Vim starts off as a daunting task. Setting up your colors, tab key to spaces, space count, configuring your linter, and on and on to infin...
Collapse
 
vonheikemen profile image
Heiker • Edited

I don't use line numbers anymore. To move around in the same screen I use sneak.vim in "label-mode".

sneak demo

In here I press s and then look for the ar and move to the one I want.

Collapse
 
ug02fast profile image
Arthur Zhuk

This looks good. Have you noticed if you're making fewer keystrokes overall to get your cursor where you want to be more consistently? Strong discipline using sneak could be better than relative line number jumping. I need to try it for a week at least and see how it plays out.

Collapse
 
vonheikemen profile image
Heiker • Edited

Yes, when I use it really does save keystrokes. I find it particularly useful when I randomly notice a typo but it is really far away from where my cursor is, what I do is press s, search the term (that's just two keys), fix the typo, then I press ctrl + o to move back where I was, and I just keep working. Everything happens fast and I don't lose my train of thought.

I do sometimes find myself "playing snake" to move around... but that's just because it's very hard to "unlearn" that habit.

Collapse
 
mainendra profile image
Mainendra

If you are using neovim and coc, I would suggest github.com/neoclide/coc-smartf

Collapse
 
ug02fast profile image
Arthur Zhuk

This has its advantages. I'm using coc outside of work environment.

Collapse
 
megasuperlexa profile image
megasuperlexa

but you sure can do 666G to go to absolute line number 666?
this does not require mind aripthmetic at all.
Nor fancy settings with relative numbers.
Plus people on a live call can point you to the desired line without having to readjust every time you jump somewhere.

Collapse
 
ug02fast profile image
Arthur Zhuk

You will just be making additional keystrokes every time you want to jump around your file instead of getting in the habit of making 2-3 strokes to navigate. I'm personally all about less keystrokes. I do use G occasionally when I know a particular error is happening on some line from a stack trace.

Collapse
 
waylonwalker profile image
Waylon Walker

♥ relative line numbers. A big part of it is the language of yank 4 lines, or delete up 10 lines to move code around.

I don't worry too much about the keystrokes as I do about the mental overhead. I like things like this that are very natural and let me focus my energy on my task.

Collapse
 
ug02fast profile image
Arthur Zhuk

Managing mental overhead is the crux when it comes to coding for me as well. That's one reason I don't like using sneak as much. I like to be in the habit of making those constant vim motion commands instead of typing out the word I want to jump to. Should be an interesting case study to say the least.

Collapse
 
waylonwalker profile image
Waylon Walker

Honestly a lot of time I even do a dj.. rather than d6j as it is easier to see. I can have 2 lines gone faster than my eyes move to the numbers and find it on the number row. The main reason I us relative lines are when I need the whole block in my paste register.

Collapse
 
megasuperlexa profile image
megasuperlexa • Edited

Yank works with the absolute line numbers as well.
type V as usual to visually select lines
type 123G to go to desired line
now yank. Or delete.
thats all
Benefit is that you are seeing what you are doing

Collapse
 
bretgeek profile image
bretgeek

The line , column number at the bottom right is enough for me:)

Collapse
 
moopet profile image
Ben Sinclair

I do use relative line numbers in my active window, because I've been trying to get used to them, but it's not working that well for me.

If it's a couple of lines, like less than 10, I'm find just eyeballing it. If it's more than that I'll either use some combination of H M and L to get close, then eyeball it, or I'll use the actual line number like d107G which is more keypresses but is just as targetted as the relative numbers.

To be honest, my brain kind of gets upset with them changing as I move around!

Collapse
 
ug02fast profile image
Arthur Zhuk

I feel the mental overhead of deciding between eyeballing the movement and using relative line numbers in those scenarios as well. Pay attention to what you do when you're in flow. That might be the most effective for you. Feels like any movement ~+/- 5 lines can be easily eyeballed.

Collapse
 
abdulrahman_asaad profile image
Abdulrahman Asaad

Why not just type the line number you want to jump to and press G! like 80G to jump to line 80! it's easier and the file is still readable