Vim状态分隔(%=),使用Unicode字符



当我设置fillchars=stl:x statusline=a%=b时,我看到以下状态线:

axxxxxb

当我设置fillchars=stl:· statusline=a%=b(·=中间点,U+00B7(时,状态行变为:

a-----b

Unicode方框图字符也是如此(它们变为-(。

我本以为:

a·····b

我错过了什么或做错了什么?

如果我没有将statusline设置为任何值,那么默认的statusline会正确地绘制Unicode字符,类似于:

~/.vimrc·····1,1·····Top

看起来Vim当前不支持自定义状态行中的多字节填充字符(版本8.1.2203(:

/* Can't handle a multi-byte fill character yet. */
else if (mb_char2len(fillchar) > 1)
fillchar = '-';

为了解决这个问题,我创建了一个函数来划清界限:

function StatusLine()
let left = 'a'
let right = 'b'
let spacer_width = winwidth(0) - len(left) - len(right)
let spacer = repeat('·', spacer_width)
return left . spacer . right
endfunction
set statusline=%{StatusLine()}

当前不支持此操作。

引用自:h 'fcs':

对于"stl"one_answers"stlnc",仅支持单字节值。

最新更新