获取光标位置,计算选项卡

时间:2013-12-05 09:54:09

标签: vim

在我的vim插件中,我使用Ruby的w.cursor获取当前光标位置。

它给我的列号基于1的标签。例如。如果当前行为\t\tfoo,并且光标位于f,则其位置将报告为3.

我需要的是基于8的制表符的光标位置(因为这是Haskell标准指定的)。因此,在上面的示例中,我需要f的列号为17,与ts设置无关。

我如何得到它?

1 个答案:

答案 0 :(得分:2)

注意!在Vim的说法中,指的是字节索引。 <Tab>字符由单个(0x09)字节表示,它为您提供1.非ASCII字符(如变音符号或汉字)将“占用”2,3或更多(取决于编码)列,但可由单个/双单元格直观地表示。

显然,你对屏幕宽度感兴趣(<Tab>可以占据1..8个单元格之间),Vim的文档称为虚拟列,并且可以通过virtcol()等函数和最近的strdisplaywidth()

访问