Осветяване на синтаксиса на Vim скриване на знаци

Бих искал да внедря синтаксисен файл за vim, който скрива определени знаци във файла. По-конкретно, искам да напиша подобрен маркер за четене на Markdown файлове, който не показва някои от форматиращите знаци, предпочитайки вместо това да ги посочи имплицитно. Например, бих искал неща като *bold* да се изобразяват просто като bold с удебелен текст или да имам заглавия като

My Header
=========

не показват подчертаната им линия, а просто се показват с различен цвят. Досега не успях да намеря примери за синтактични файлове на vim, които скриват конкретни знаци от дисплея. Това нещо възможно ли е във vim? Ако е така, как?


person Derek Thurn    schedule 11.10.2011    source източник
comment
Не мога да сложа пръст върху това, но това звучи като ужасна идея. Vim е за редактиране на текст, а не за изобразяване (с изключение на гънки, разбира се).   -  person Bradford    schedule 11.10.2011
comment
ако искате изживяване с Wysiwyg, потърсете приставката, която поддържа прозорец на браузъра в синхрон с редактирания документ за маркиране. Не си спомням кое беше, но го обсъждахме преди   -  person sehe    schedule 11.10.2011


Отговори (2)


За да скриете синтактични елементи - или само определени знаци - могат да се използват аргументите conceal или Ignore. Вижте

:help hl-Ignore
:help syn-conceal

За пример вижте синтактичния файл "help.vim", който е част от crefvim. CRefVim е C-референтно ръководство, което е вградено в системата за помощ на Vim. Синтаксисният файл "help.vim" разширява стандартното осветяване на синтаксиса за помощни файлове.

Пример. Знакът '$' се използва тук за показване на текст в курсив:

пример за използване на аргумента за игнориране на синтаксиса, help.vim

Може би този пример е добра отправна точка за по-нататъшно копаене...

Хаби

person Habi    schedule 11.10.2011

Можете да създадете свой собствен синтаксисен файл със съответна цветова тема, като използвате "удебелен шрифт", "курсив" и други подобни. Няма да скрие нищо, така че вашият синтаксис трябва да работи с оригиналния текст. Например това може да е вашият синтаксис за заглавки

Във вашия синтаксис ще ви трябва:

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, като запазите подчертаването.

person inknoir    schedule 09.01.2012