Vim 中的右下角数字

Vim 中的右下角数字

在 vim 编辑器的右下角,有 2 个数字,以以下格式显示行号和列号:

495,30 

但在某些行上,使用了这种格式:

496,9-30

上面的格式是什么意思-?光标仍然在列上,30但那是什么9

答案1

它指的是相对于特殊字符(即:制表符)的光标位置。

假设你的屏幕是这样的(我知道,屏幕很小):

1 xxxxxxxxx - - - - - - - - - - - - - - - - -
2-------------------------------------
3-------------------
4-------------------------------------
5 - - x --- --- --- x
6-------------------------------------
7--------------------
8 xxxxxxxxxxxxxxxxxxxxx xxxx

任何单个字符(unicode 除外)= 1 个字节
3 个附加行 (---) = Tab = 1 个字节
1 个空格 (-) = 1 个字节

Tab 配置为显示超过 8 列。

如果光标在第 1 行的最后一个 X 上,Vim 将显示 1,10。如果光标在第 5 行的第一个 X 上,则将显示 5,3。第 8 行的最后一个 X 表示 8,25。但是,由于第 5 行的第二个 X 被 3 个 Tab 序列分隔开,如果光标在第 1 行的最后一个 X 上,则将显示 5,7-25。

  • 第一个 5 显然是行号
  • 7 表示列中的字节数(2 个空格、一个 x、3 个制表符以及最后一个 x = 7)
  • 25 代表您在控制台中看到的列。使用 25 个空格将与 2 个空格、一个 x、3 个制表符和另一个 x 位于相同的位置。如您所见,第 8 行中的第 25 个 X 与第 5 行中的最后一个 X 对齐。

答案2

来自 Vim“options.txt”帮助页面(重点是我的):

如果显示的字符数与文本中的字节数不同(例如,对于 TAB 或多字节字符),同时显示文本列(字节数)和屏幕列,以破折号分隔。

空行显示“0-1”。

对于空缓冲区,行号也为零:“0,0-1”。

例如,如果一行的第一个字符是制表符,并且 Vim 配置为在 8 列上显示制​​表符,则标尺将显示 1-8,因为制表符仍然只是一个字节,但光标将位于第 8 列。

在浏览包含扩展 Unicode 字符的文件时,您会看到类似的情况,因为它们需要多个字节来存储,但仍然只使用屏幕上的一列。

答案3

上面的例子中,字节数小于屏幕列数(例如 9-30、7-25)。当显示的单字节字符占用超过一个屏幕列时,就会发生这种情况。

字节数也可能大于屏幕列数。当在一个(或更少)列中显示多个字节时,就会发生这种情况。例如,多字节字符'\xa0'(十六进制表示法)可能显示在屏幕上的单个列中。

例如,在第 5 行中,如果第二个字符是两个字节,第四个字符也是两个字节,则沿着第 5 行移动时,列号会进行如下变化:

5,1
5,2   (two-byte character, appears in a single column)
5,4-3
5,5-4 (two-byte character, appears in a single column)
5,7-5

相关内容