#vim #vim-syntax-highlighting
#vim #vim-подсветка синтаксиса
Вопрос:
Я хотел бы реализовать синтаксический файл для vim, который скрывает определенные символы в файле. В частности, я хочу написать улучшенный маркер для чтения файлов Markdown, который не отображает некоторые символы форматирования, предпочитая вместо этого указывать их неявно. Например, я хотел бы, чтобы такие вещи, как *bold*
рендеринг, были просто bold
выделены жирным шрифтом или имели заголовки типа
My Header
=========
не показывать их подчеркивание, а просто отображать другим цветом. До сих пор мне не удалось найти ни одного примера файлов синтаксиса vim, которые скрывают определенные символы от отображения. Возможно ли это в vim? Если да, то как?
Комментарии:
1. Я не могу понять это, но это звучит как ужасная идея. Vim предназначен для редактирования текста, а не для его удаления (за исключением сгибов, конечно).
2. если вам нужен интерфейс Wysiwyg, найдите плагин, который синхронизирует окно браузера с отредактированным документом markdown. Я не помню, что это было, но это обсуждалось ранее
Ответ №1:
Чтобы скрыть элементы синтаксиса — или только определенные символы — можно использовать аргументы скрыть или Игнорировать. См.
:help hl-Ignore
:help syn-conceal
Для примера см. Файл синтаксиса «help.vim», который является частью crefvim. CRefVim — это справочное руководство по C, встроенное в справочную систему Vim. Файл синтаксиса «help.vim» расширяет стандартную подсветку синтаксиса для файлов справки.
Пример. Символ ‘$’ используется здесь для отображения текста курсивом:
Возможно, этот пример является хорошей отправной точкой для дальнейшего изучения…
Habi
Ответ №2:
Вы можете создать свой собственный синтаксический файл с соответствующей цветовой схемой, используя «жирный», «курсив» и тому подобное. Это ничего не скроет, так что ваш синтаксис должен работать с исходным текстом. Например, это может быть ваш синтаксис для заголовков
В вашем синтаксисе вам понадобится:
syn match Header '^s*u*.s.*$' contains=ALL
hi link Header ModeMsg
и в цветовой теме
hi ModeMsg gui=bold guifg=NONE guibg=NONE cterm=bold ctermfg=NONE ctermbg=NONE term=bold
затем заголовок, подобный этому
1. This is my new header, being bold
будет отображаться жирным шрифтом, без какой-либо разметки вообще. Кстати, вы можете экспортировать его с помощью функции toHtml, сохраняя подсветку.