在 vim 编辑器的右下角,有 2 个数字以下列格式显示行号和列号:
495,30
Run Code Online (Sandbox Code Playgroud)
但在某些行上,使用这种格式:
496,9-30
Run Code Online (Sandbox Code Playgroud)
上面的格式-是什么意思?光标仍在列上,30但那是什么9?
它指的是相对于特殊字符(即:制表符)的光标位置。
假设你的屏幕是这样的(小屏幕,我知道):
1 xxxxxxxxxx - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - 4 - - - - - - - - - - - - - - - - - - - - - - - - 5 - - x --- --- --- x 6 - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - - - - - - - - - - - - - - - - - - - - - - 8 xxxxxxxxxxxxxxxxxxxxxxxx
任何单个字符(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 序列分隔,如果您的光标位于最后一个 X 上,它将显示 5,7-25。
从 Vim 的“options.txt”帮助页面(重点是我的):
如果显示的字符数与文本中的字节数不同(例如,对于 TAB 或多字节字符),则同时显示文本列(字节数)和屏幕列,并用破折号分隔。
对于空行,显示“0-1”。
对于空缓冲区,行号也将为零:“0,0-1”。
例如,如果一行的第一个字符是一个制表符,而 Vim 被配置为在 8 列上显示制表符,您的标尺会显示 1-8,因为制表符仍然只有一个字节,但您的光标将位于第 8 列.
在浏览包含扩展 Unicode 字符的文件时,您会看到类似的情况,因为它们需要一个以上的字节来存储,但仍然只使用屏幕上的一列。