10

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

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

例如,以下各项的含义是什么?

0-1
17-18

等等。在我能管理的范围内,同时找到这些例子。之前的数字-是最后一个实心列,换句话说就是实列。这个对吗?

谢谢你的帮助!

4

1 回答 1

19

在 Vimstatusline中,您可以设置许多标志,其中存在:

  • %c-- 列号,即字节数。
  • %v%V-- 虚拟列号,即屏幕上的列号。

那么实际列号和虚拟列号有什么区别呢?答案是,当使用制表符时,虚拟列号是您当前列号的近似值,就好像您使用的是空格而不是制表符一样。

例子。Vim 状态行中一个有用的组合是:

%c%V

正如它在帮助中所说,显示虚拟列号的 %V 标志只会在它与实际列号不同时打印(带有前面的破折号)。因此,通常您的状态行将只显示实际的列号(例如,8),但如果您位于带有制表符或多字节字符的行上,您将看到两个数字(例如1-8)。

例如,试试这个:

echo -e "\tHello world." > /tmp/test

然后,/tmp/test在 Vim 中打开并注意您的状态行,指示实际列和虚拟列之间的差异。如果将tabstop设置更改为不同的值,则虚拟列将更改。

最后,如果你:set expandtab和 do :retab,那么虚拟列指示器将被隐藏。

于 2012-11-24T19:41:29.113 回答