The five values that define cursor position in vim
We generally think of a cursor having two coordinates, x and y, row and column, but when I call getcurpos()
I get a list with 5 values in it.
:help getcurpos()
:echo getcurpos()
[0, 4124, 8, 0, 57]
Here are the definitions of those numbers:
bufnum - the number of the buffer when calling getpos("'A")
to get the position with a mark. Always 0 with getcurpos()
lnum - The line number
col - The number of chars used to go this far to the right. <Tab><Tab> is 2. 10 spaces is 10.
off - Is the number of chars past the end of the line. 0 unless using virtualedit
.
curswant - Is the column you started on when starting to navigate with j and k. You might start on col 20, and go down to a line with only 10 columns in which case the cursor would be on col 10, but curswant
would still 20. The next navigation to a line with more than 20 characters would put you back on col 20.
With virtualedit turned on curswant
will always be the column position of the cursor.