I'm trying to find a way to show relative line numbers as well as absolute line numbers, but not the way hybrid line numbers does it.
I want to see both at all times, probably each displayed on a column. Is this possible?
Vi and Vim Stack Exchange is a question and answer site for people using the vi and Vim families of text editors. It only takes a minute to sign up.
Sign up to join this communityI'm trying to find a way to show relative line numbers as well as absolute line numbers, but not the way hybrid line numbers does it.
I want to see both at all times, probably each displayed on a column. Is this possible?
There is no way to have both absolute and relative numbers being displayed by Vim.
What you can do however, is to (ab)use the sign feature and display the relative numbers there. Note, since the sign column is limited to 2 characters, it won't work on very long windows with more than 100 lines.
There are a couple of plugins that enable it. The already mentioned RltvNmbr.vim from Dr. Chip, which was used to enable relative line numbering before that feature was available in Vim natively (around Vim 7.3 I believe). An alternative is to use my plugin DynamicSigns. This allows to flexible define what kind of signs will be drawn and when. Have a look at the example from this answer
Also, the sign column needs to be updated very often, which might impose a performance penalty. My DynamicSigns plugin tries to update the sign column as often as needed, but it might still be noticeable, if you scroll a lot. There is not much that can be done against it.
As Steven Fontanella said, you could use plugins to accomplish this.
But Vim brings you more than that.
First, I think you should consider your needs.
Why both at the same time ?
:set rnu
and :set nornu
to toggle the relative line number when you need. You could even write a piece of vimscript and bind to a shortcut to toggle the relative line number. So that when you need to see each of the line number, you can simplly toggle it. I guess you don't really need to see the both at the same time, because they don't related with each other numerically.8
, you want to go line 16
, you can either by using :16
+enter
(which is the ed
way), or by 8
+j
(8 lines after) . It depends on which type of line number you are using.Most vim functions will provide possiblity to use either of the line number style. You can rely on Vim's :help
for more information, research what you really need and find & read it, you will be benefited by this. Just as the author of Vim Bram Moolenaar
said:
- Detect inefficiency
- Find a quicker way
- Make it a habit
statusline
(`:help 'statusline'). They don't draw the line by them self, it is drawn by Vim. There is no such option or other api for line numbers.:set nu
in one window while enabling:set rnu
in another. Then just resize the windows. But all this is really ridiculous solution to a problem which in itself is ridiculous.