Я ищу возможное решение для применения двух разных цветов фона внутри одного буфера vim в зависимости от контекста, как в этом примере возвышенного текста .
Один из вариантов использования - по-разному раскрасить фрагменты кода внутри файлов разметки, чтобы они выделялись больше.
Однако я никогда не видел пример с такой установкой.
Это вообще возможно в vim?
colorscheme
Каролис Концевичюс
источник
источник
Ответы:
Поскольку мне было любопытно, насколько хорошо это будет работать, я взломал что-то подобное.
Как упоминалось в комментариях к предыдущему ответу, единственный способ сделать это - заполнить регионы пробелами; именно это мы и делаем; перед тем как написать, мы удалим эти пробелы, поэтому вам не следует беспокоить кого-либо еще.
Обратите внимание, что этот пример очень специфичен для типа файла уценки!
Побочные эффекты :
'list'
включенВо-первых, вам нужно добавить это в ваш
~/.vim/after/syntax/markdown.vim
:Вы можете настроить цвета по своему вкусу, конечно ;-)
Затем добавьте это в ваш vimrc:
Я не собираюсь объяснять код построчно, комментарии должны прояснить общую суть ;-)
источник
Конечно, можно использовать другой цвет фона для выделенных синтаксисом элементов. Просто определите
guibg
иctermbg
цвета в вашейhilight
команде. Первый устанавливает цвет фона для графического интерфейса Vim, а второй - для терминала Vim.Однако это имеет важное ограничение: он может устанавливать цвета фона только для символов, которые фактически существуют в файле.
Результатом этого является то, что цвет фона не может простираться за конец текста на линии до края окна, поэтому раскраска блоков кода, показанная в вашем примере, невозможна:
Вы также можете изменить цвет фона целых линий, используя функцию подписи. (См.
linehl
В:help sign.txt
)Однако обратите внимание, что:
Это требует написания кода для размещения знаков в каждой строке, которая должна быть окрашена, и их обновления по мере изменения содержимого файла,
По умолчанию при размещении знака столбец знака будет отображаться в левой части окна. Можно изменить окраску столбца знака с группой
SignColumn
подсветки, и в более поздних версиях Vim ее можно полностью удалить. (См:help 'signcolumn'
.)Например, чтобы адаптировать решение Carpetsmoker для использования (более надежного) механизма подписи, вы можете сделать следующее:
Это несколько упрощает код и имеет меньше предостережений, чем версия Carpetsmoker.
@ChristianBrabandt «s DynamicSigns плагин делает с помощью функции Sign для этой цели проще: он описывает , как использовать его , чтобы сделать это в этом ответе .
источник
guibg
работает только на gvim, это правильно?ctermbg
, как указано.