Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim:状态行如何';%V';工作_Vim_Statusline - Fatal编程技术网

Vim:状态行如何';%V';工作

Vim:状态行如何';%V';工作,vim,statusline,Vim,Statusline,这里有一个Vim问题,我还没有找到答案。%Vstatusline变量的作用是什么 我查看了我能找到的文档,但不太清楚,我知道它显示了虚拟列,但是-前面的数字/字母是什么意思 例如,以下各项的含义是什么 0-1 17-18 等等,从我能管理的,同时找到这些例子。-前面的数字是最后一个实数列,换句话说是实数列。这是正确的吗 谢谢你的帮助 在Vimstatusline中,在您可以设置的众多标志中,有: %c--列号,即字节号 %v和%v虚拟列号,即屏幕上的列号 那么,实际列数和虚拟列数之间的区别

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

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

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

0-1
17-18
等等,从我能管理的,同时找到这些例子。
-
前面的数字是最后一个实数列,换句话说是实数列。这是正确的吗


谢谢你的帮助

在Vim
statusline
中,在您可以设置的众多标志中,有:

  • %c
    --列号,即字节号
  • %v
    %v
    虚拟列号,即屏幕上的列号
那么,实际列数和虚拟列数之间的区别是什么?答案是,当使用制表符时,虚拟列编号是当前列编号的近似值,就像使用空格而不是制表符一样

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

%c%V
如帮助中所述,显示虚拟列编号的%V标志只有在与实际列编号不同时才会打印(前面有一个破折号)。因此,通常情况下,您的状态行只显示实际列号(例如,
8
),但如果您在一行中使用制表符或多字节字符,您将看到两个数字(例如,
1-8

例如,尝试以下方法:

echo -e "\tHello world." > /tmp/test
然后,在Vim中打开
/tmp/test
,注意您的状态行,它指示实列和虚列之间的差异。如果将
tabstop
设置更改为其他值,则虚拟列将更改


最后,如果您
:设置expandtab
并执行
:retab
,则虚拟列指示器将隐藏。

第一个数字不是
%V
的一部分,很可能是
%c
。谢谢@romainl,就是这样。+1。虽然从我的理解来看,这并不清楚,但它并没有回答我的问题。我的问题是
-
前面的数字是什么。尽管如此,@romainl为我回答说,是
%c
%V
之前。无论如何,谢谢你的回答和时间,我会接受你的回答,因为这是唯一的答案。:)@EDU列和虚拟列之间的差异不包含在选项卡中。还有其他示例:
UTF-8中表示的字符占用3列(3字节:E2 80 9C),但仅占用1个虚拟列。
(全宽拉丁文大写A)占用3列(UTF-8)和2列虚拟列(全宽!)。正如您所看到的“虚拟列编号是当前列编号的近似值,就像您使用空格而不是制表符一样”是完全错误的语句,虚拟列编号是某些字符结束的显示单元的编号(官方:“文件位置的屏幕列”).Ah我看到@ZyX,我想这只适用于可变宽度字体?还是同样适用于单间距字体?此外,没有近似值,它总是给出精确的值。vim中的列是字节偏移量,它们与显示列无关。@Eduan全宽字符在单间距字体中占据两个显示单元格。