Подсветка синтаксиса Vim для скрытия символов

#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» расширяет стандартную подсветку синтаксиса для файлов справки.

Пример. Символ ‘$’ используется здесь для отображения текста курсивом:

пример использования игнорирования синтаксического аргумента, 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, сохраняя подсветку.