VIM: Как изменить цвет подсветки Showbreak без использования цветного элемента NonText
Я отметил, что символ "showbreak" подсвечивается цветным элементом "NonText". NonText также используется для символов EOL.
Я хотел бы сохранить цвет подсветки для символов EOL, но вы хотите изменить его для символа showbreak, это возможно?
Другая проблема заключается в том, что мой символ showbreak не отображается.
Я хотел бы использовать этот символ "↳" и поместить его в столбец linenumbers (используя set cpoptions + = n). Я не могу понять, как отображать символ и как помещать пробел после символа showbreak (между текстом и символом).
Кто-нибудь может мне помочь?
Ответы
Ответ 1
Я не думаю, что вы хотите, чтобы подсветка отличалась от символа EOL, по крайней мере, я не знаю, как это сделать.
Во второй части я могу помочь. Я смог получить "↳" для отображения в столбце номера строки со следующими настройками:
let &showbreak = '↳ '
set wrap
set cpo=n
Обратите внимание, что после ↳
есть пробел. Это выглядит хорошо, пока в файле не будет > 9 строк. Если вы хотите, чтобы он совпал с последним символом столбца номера, независимо от количества строк, я не уверен, что вам нужно делать.
Изменить: Недавно я написал функцию доказательство концепции для кого-то из IRC, которая выделяет первый символ в строке, которая имеет был обернут другой группой подсветки. Он не тестировался много, но, похоже, он работает. Не совсем то, что вы ищете, но, возможно, стоит посмотреть.
Ответ 2
: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 должен помогать вам бороться с несколькими языками, а не быть препятствием.