0

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

阅读后:h statusline我发现%c它看起来很有希望,但它计算的是字节而不是字符。我想用字符分隔列,而不是字节。%v如果没有使用标签,则可以使用。这里有一个例子:

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

我想显示第一行中指示的数字。以下适用于第一列到第三列,直到选项卡发挥作用。

:set statusline=%v

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

:set statusline=%c

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

4

1 回答 1

2

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

:let &stl = "%{strlen(substitute(strpart(getline('.'), 0, col('.')), '.', 'x', 'g'))}"
于 2014-01-26T18:59:43.687 回答