Разделение строки состояния Vim (% =) с символами Юникода - PullRequest
0 голосов
/ 23 октября 2019

Когда я устанавливаю fillchars=stl:x statusline=a%=b, я вижу следующую строку состояния:

axxxxxb

Когда я устанавливаю fillchars=stl:· statusline=a%=b (· = средняя точка, U + 00B7), строка состояния становится:

a-----b

То же самое происходит с символами рисования Unicode box (они становятся -).

Я бы ожидал:

a·····b

Что я пропускаю или делаю неправильно?

Если я не установлю statusline для чего-либо, то по умолчанию statusline правильно отображает символ Unicode, что-то вроде:

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

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

В настоящее время это не поддерживается.

Цитата из :h 'fcs':

для "stl" и "stlnc" поддерживаются только однобайтовые значения.

0 голосов
/ 23 октября 2019

Похоже, что 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()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...