Vim:状态线'%V'如何工作?

时间:2012-11-24 19:15:27

标签: vim statusline

这是一个我无法找到答案的Vim问题。 %V状态行变量有什么作用?

我检查了我能找到的文档,但是它不是很清楚,我知道它显示了虚拟列,但是-之前的数字/字母是什么意思?

例如,以下各项是什么意思?

0-1
17-18

等。从我可以管理的,找到这些例子。 -之前的数字是最后一个实心列,换句话说就是真实列。这是对的吗?

感谢您的帮助!

1 个答案:

答案 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,则会隐藏虚拟列指示符。