в vimrc применять определенные правила подсветки только для определенного типа файла - PullRequest
0 голосов
/ 29 ноября 2018

в моем vimrc у меня есть скрипт, который преобразует текст, выделенный жирным шрифтом, когда он заключен между * * двойными звездами * * (как на самом деле в этом редакторе), но я не хочу, чтобы он применялся к моим js или c илиКонечно, любые программные файлы, поэтому я попытался запустить его только тогда, когда это TXT-файл:

if (&filetype=='text')
    set concealcursor=n
    set conceallevel=3
    hi AsteriskBold ctermfg=Green cterm=bold
    autocmd BufEnter * syn match Asterisks contained "**" conceal
    autocmd BufEnter * syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks
endif

, но, очевидно, условие «если» не работает, так как эти правила не применяютсябольше ни в одном из моих файлов, текстовых или нет

EDIT => SOLUTION

после прочтения ответов я выбираю это решение в моем vimrc (хотя это не лучший способ, которым vim работает как объяснениеот ingo)

au BufEnter *.txt setf text "(set a filetype unless it already exist)
au filetype text set cocu=n cole=3
au filetype text hi AsteriskBold ctermfg=Green cterm=bold
au filetype text syn match Asterisks contained "**" conceal
au filetype text syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Типы файлов

Параметры, относящиеся к типу файла, входят в ~/.vim/after/ftplugin/text.vim.(Для этого требуется, чтобы у вас был :filetype plugin on; использование каталога после позволяет вам переопределить любые настройки типа файла по умолчанию, выполняемые $VIMRUNTIME/ftplugin/text.vim.) В качестве альтернативы, вы можете определить :autocmd FileType text ... непосредственно в вашем ~/.vimrc, но это становится громоздким, когда у вас много настроек.

Синтаксис

Для команд :syntax есть соответствующий каталог ~/.vim/after/syntax/text.vim.(В настоящее время Vim не поставляется с выделенным синтаксисом text; вы можете отбросить часть after и сделать свой синтаксис основным.)

В соответствии с соглашением о синтаксических сценариях ваши группы синтаксиса должны иметь префиксс типом файла;например, textAsterisks.Группа :hi также должна быть переименована;однако обычно синтаксические сценарии используют :hi def link, чтобы связать группу синтаксиса с (более общей) группой выделения: hi def link textAsteriskBold AsteriskBold.Более подробную информацию вы найдете в конце usr_44.txt.

Группы выделения

Они являются глобальными, вы можете поместить свои команды :hi непосредственно в ~/.vimrc и определите его только один раз.

Conceal

Настройки скрытия window-local , но типы файлов и синтаксисы применяются к буферам .И используя :set (вместо :setlocal), эти настройки будут унаследованы любым новым окном, открываемым из того, которое показывает текстовый файл.В зависимости от вашего рабочего процесса (и от того, вообще ли используют другие типы файлов, которые вы редактируете, скрытие), вы можете никогда не заметить этого, и нет хорошего обходного пути (только огромный беспорядок :autocmd может попытаться адаптировать их).Просто знайте об этом.

0 голосов
/ 29 ноября 2018

Вы ищете augroup.

См. :help augroup и :help filetype.

Например:

augroup asteriskbold
    au!
    au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn set concealcursor=n conceallevel=3
    au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn hi AsteriskBold ctermfg=Green cterm=bold
    au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn syn match Asterisks contained "**" conceal
    au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks
augroup end
...