这是一个我无法找到答案的Vim问题。 %V
状态行变量有什么作用?
我检查了我能找到的文档,但是它不是很清楚,我知道它显示了虚拟列,但是-
之前的数字/字母是什么意思?
例如,以下各项是什么意思?
0-1
17-18
等。从我可以管理的,找到这些例子。 -
之前的数字是最后一个实心列,换句话说就是真实列。这是对的吗?
感谢您的帮助!
答案 0 :(得分:17)
在Vim statusline
中,在您可以设置的众多标志中,存在:
%c
- 列号,即字节数。%v
和%V
- 虚拟列号,即屏幕上的列号。那么实际和虚拟列号之间有什么区别?答案是,当使用制表符时,虚拟列号是您当前列号的近似值,就像您使用空格而不是制表符一样。
实施例。 Vim状态行中有用的组合是:
%c%V
正如帮助中所述,%V标志显示虚拟列号,只有当它与实际列号不同时才会打印(带有前面的短划线)。因此,通常您的状态行仅显示实际列号(例如,8
),但如果您在带有制表符或多字节字符的行上,您将看到两个数字(例如1-8
)
例如,试试这个:
echo -e "\tHello world." > /tmp/test
然后,在Vim中打开/tmp/test
并注意您的状态行,指示真实列和虚拟列之间的差异。如果将tabstop
设置更改为其他值,则虚拟列将更改。
最后,如果您:set expandtab
并执行:retab
,则会隐藏虚拟列指示符。