288

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?

2

7 Answers 7

328

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

7
  • 1
    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
    Dec 6, 2011 at 20:49
  • 11
    62 is counting tabs as one character, 68 is counting expanded tabs Dec 6, 2011 at 20:58
  • 1
    From 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
    Dec 6, 2011 at 21:00
  • 1
    ruler doesn't work with split windows in Vim.
    – Mihai
    Nov 17, 2015 at 16:03
  • 2
    @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
    Aug 10, 2018 at 13:17
42

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.

6
  • 1
    This doesn't work for me. I probably need some more settings.
    – Jonas
    Dec 6, 2011 at 23:34
  • 5
    Jonas, 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). Jan 17, 2014 at 14:01
  • I used the following to provide space before this and the previous stuff on the statusline: set statusline+=\ col:\ %c, Feb 26, 2015 at 17:36
  • I like this answer more than ruler,somebody else want to customize vim should try to edit .vimrc file.
    – zionpi
    Jul 16, 2020 at 15:42
  • That will count bytes and not characters or columns, which means that if the line contains multi-byte characters such as ξéã, the column count will be wrong. Using %v solves it.
    – user596332
    Nov 3, 2020 at 19:35
34

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)

2
  • 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
    Mar 2, 2016 at 11:44
  • This solution also works from vi, where :se ruler? gives E519: Option not supported: ruler?
    – krubo
    Jan 31, 2021 at 1:17
20

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]

19

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

1
  • 11
    Hitting 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
    Apr 19, 2017 at 20:30
7

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

2

For permanent change you can just do:

echo "set ruler" >> ~/.vimrc

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .