How to show the current column in the statusbar in vim?

201

36

I would like to show the current column in the statusbar, as is common in many other text editors. E.g. it's good to know if you are around column 80 or above.

How to show the current column in the statusbar?

Jonas

Posted 2011-12-06T20:35:04.510

Reputation: 21 007

If you want to show the current column of cursor, then type :echo col('.'). – SibiCoder – 2016-05-26T07:21:39.867

See also: Why does “set ruler” get reset to noruler?

– user – 2019-11-01T18:23:36.683

Answers

234

Try if setting 'ruler' option is what you are looking for. On my computer at the bottom right shows the line and column where I have the cursor.

:set ruler

EDIT TO COMMENTS:

From the help of vim (command :help ruler):

If the number of characters displayed is different from the number of bytes in the text (e.g., for a TAB or a multi-byte character), both the text column (byte number) and the screen column are shown, separated with a dash.

You can try changing it with rulerformat option, like :set rulerformat=%l,%v

Birei

Posted 2011-12-06T20:35:04.510

Reputation: 2 744

ruler doesn't work with split windows in Vim. – Mihai – 2015-11-17T16:03:45.603

@Jonas Not only tabs, as RedGrittyBrick said, but also characters versus bytes. This is very apparent in UTF-8 files where a single-character glyph has a multi-byte code point. For example, the Latin eñe (n with tilde over it, pronounced EN-yea) is a single character glyph but takes two bytes to represent the code point (\xC3B1), and one third (1/3) is a single character glyph with a three byte code point (\xE28593). – Luv2code – 2018-08-10T13:17:11.867

Yes, kind of. But that is showing a strange value e.g. 23,62-68 were 23 seem to be the line. How should I interpret 62-68 for the column? – Jonas – 2011-12-06T20:49:54.347

762 is counting tabs as one character, 68 is counting expanded tabs – RedGrittyBrick – 2011-12-06T20:58:34.913

1From command ':help ruler': "If the number of characters displayed is different from the number of bytes in the text (e.g., for a TAB or a multi-byte character), both the text column (byte number) and the screen column are shown, separated with a dash." You can try changing it with 'rulerformat' option, like ':set rulerformat=%l,%v' – Birei – 2011-12-06T21:00:45.310

28

See :help statusline for the many options available.

I have this in my ~/.vimrc in between a bunch of other directives:

set statusline+=col:\ %c,

which outputs

col: 64

in my statusline.

I don't have set ruler.

romainl

Posted 2011-12-06T20:35:04.510

Reputation: 19 227

I used the following to provide space before this and the previous stuff on the statusline: set statusline+=\ col:\ %c, – David Baucum – 2015-02-26T17:36:58.920

1This doesn't work for me. I probably need some more settings. – Jonas – 2011-12-06T23:34:28.593

3Jonas, You may have to use the set laststatus=2 in your .vimrc to always display the status line. (0 -> never display the status line, 1 -> only if there are at least two windows, 2 -> always display the status line). – pabuisson – 2014-01-17T14:01:15.687

21

Another way to do this is to do 'g Ctrl-G', which prints the current position of the cursor in five ways: Column, Line, Word, Character and Byte. (from http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G)

Peter

Posted 2011-12-06T20:35:04.510

Reputation: 311

This solution has something neat, that differentiates Column and VisibleColumn. Non printable characters are displayed 2 columns, but should be counted as one. If non printable characters the output looks like this: RealColumn-VisibleColumn, Line, Word, Character and Byte. – mxlian – 2016-03-02T11:44:21.077

18

Or, leave 'ruler' unset, a performance gain, and press CTRL-G when you want to see the current column.

ma11hew28

Posted 2011-12-06T20:35:04.510

Reputation: 502

5Hitting Ctrl-Anything doesn't sound like a performance gain. We're typing characters. No human has fingers and eyes that fly fast enough to see this kind of performance difference. – macetw – 2017-04-19T20:30:26.593

13

I would depreciate using set ruler because I believe it is not compatible with the statusline options, e.g. if you set the statusline to display the full filepath in combination with set ruler

set statusline+=%F

set ruler

Then it does NOT display the column number but just the full filepath in the statusbar. However if you put the following in your .vimrc

set statusline+=%F\ %l\:%c

It will display everything correctly, namely the

[Filepath/filename] [linenumber]:[column number]

Giovanni Macciocu

Posted 2011-12-06T20:35:04.510

Reputation: 231

3

For the other people that are looking for this answer and are not used to working with VIm, personally the simplest answer I've found is to add this line to the end of your .vimrc file in your home directory:

set ruler

Jay

Posted 2011-12-06T20:35:04.510

Reputation: 143