在状态行中显示当前列

时间:2014-01-26 18:23:42

标签: vim statusline

如何在状态行中显示当前列?

阅读:h statusline后,我发现%c看起来很有前途,但很重要 字节而不是字符。我希望用字符分隔列, 不是字节。如果没有使用标签,则%v有效。这是一个例子:

123 56789
“äå µåäö”
   ^ this is a tab

我想显示第一行中显示的数字。以下作品 对于第一到第三列,直到标签发挥作用。

:set statusline=%v

以下内容仅适用于第一行,但不适用于第二行。

:set statusline=%c

鉴于上述示例vim显示5如果光标位于。{ 第一行中的数字,这就是我想要的。如果我向下移动一排 光标位于µ我还想显示5%c 显示9%v取决于tabstop

的值

1 个答案:

答案 0 :(得分:2)

我认为您必须在'statusline'选项中使用表达式:%{<exp>}。抓取线,将其修剪到光标列,用1字节字符替换所有字符,并计算字符串的长度:

:let &stl = "%{strlen(substitute(strpart(getline('.'), 0, col('.')), '.', 'x', 'g'))}"