VIM: Как изменить цвет подсветки Showbreak, не используя NonText Color-элемент - PullRequest
10 голосов
/ 21 апреля 2011

Я заметил, что символ «showbreak» подсвечивается цветным элементом «NonText». NonText также используется для символов EOL.
Я хотел бы сохранить цвет подсветки для символов EOL, но хочу изменить его для символа showbreak, возможно ли это?

Другая проблема заключается в том, что мой символ showbreak не отображается. Я хотел бы использовать этот символ "↳" и поместить его в столбец белья (используя набор cpoptions + = n). Я не могу узнать, как отобразить символ и как поставить пробел после символа showbreak (между текстом и символом).

Кто-нибудь может мне помочь?

Ответы [ 2 ]

6 голосов
/ 10 ноября 2011

:help hl-NonText довольно ясно показывает, что вы не можете иметь разные цвета для строки 'showbreak' и других нетекстовых строк, членом которых является eol (см. :help 'listchars'):

нетекстовый

'~' и '@' в конце окна, символы из 'showbreak' и другие символы, которые на самом деле не существуют в тексте (например, ">" отображается, когда символ двойной ширины не помещается в конце линия).

Если вы готовы принять это ограничение (@elliottcable), hi! link NonText LineNr сопоставит строку 'showbreak' с цветами номера строки.

Если вы действительно хотите проявить смекалку, в качестве компромисса вы можете создать отображение или команду для переключения между ':set list' и ':set nolist', которые также изменят настройку NonText highlight одновременно.

Если вы используете :set relativenumber (добавлено в vim 7.3), :set showbreak=↳\ \ \ будет надежно удерживать ваши 'showbreak' аккуратно выровненными, так как ширина номера не изменится при навигации по файлу. (Это в дополнение к :set cpo+=n и :set wrap @Randy Morris, упомянутым в его ответе.)

Вам определенно понадобится UTF-8 для символа , поскольку он не отображается в других кодировках. Я настоятельно рекомендую вам тщательно документировать ваши проблемы с кодировкой, подробно описывать, как их воспроизводить вместе с вашей ОС, ее версией и выводом :version vim, и публиковать их как отдельные вопросы. UTF-8 должен помогать вам спорить на нескольких языках, а не мешать.

6 голосов
/ 21 апреля 2011

Я не думаю, что вы получите подсветку, отличную от символа EOL, по крайней мере, я не знаю, как это сделать.

Во второй части я могу помочь. Мне удалось отобразить «↳» в столбце номера строки со следующими настройками:

let &showbreak = '↳ '
set wrap
set cpo=n

Обратите внимание, что после есть пробел. Это хорошо, пока в файле> 9 строк. Если вы хотите, чтобы он совпадал с последним символом числового столбца независимо от количества строк, я не уверен, что вам придется делать.

Редактировать: я недавно написал функцию проверки концепции для кого-то в IRC, которая выделяет первый символ в строке, которая была обернута другой группой выделения. Это не было проверено много, но, похоже, работает. Не совсем то, что вы ищете, но, возможно, стоит посмотреть.

...