Как сказал "too much php", не существует прямого способа сказать "создать значение, похожее на это, и добавить жирный шрифт". Лучший способ - изменить вашу цветовую схему. Если вы не используете пользовательскую цветовую схему, скопируйте ее из основного установочного каталога vim в каталог ~ / .vim / colors и отредактируйте ее в соответствии с вашими предпочтениями. Также можно выполнить поиск на странице сценариев vim и попробовать некоторые из множества доступных.
Бесстыдный плагин: если вам нужен тот, который легче редактировать, чем стандартный формат, попробуйте мою «Бандитскую» цветовую схему .
Если вы действительно хотите иметь возможность добавлять жирный шрифт на лету, вам понадобится довольно сложный скрипт, подобный приведенному ниже. Обратите внимание, что это не будет сохранено для вашего следующего сеанса, если вы не вызовете его автоматически после загрузки вашей цветовой схемы или сделав что-то вроде:
:autocmd ColorScheme AddBoldToGroup my_highlight_group
Сценарий во всем его масштабе ниже. Насколько я знаю, нет более быстрого способа сделать это! Очевидно, что вы могли бы сохранить несколько строк, написав меньше подробного кода, но общая идея многократного использования redir
и silent hi
- единственный способ.
" Call this with something like
"
" :AddBoldToGroup perlRepeat
"
command! -complete=highlight -nargs=1 AddBoldToGroup call AddBoldToGroup(<f-args>)
function! AddBoldToGroup(group)
" Redirect the output of the "hi" command into a variable
" and find the highlighting
redir => GroupDetails
exe "silent hi " . a:group
redir END
" Resolve linked groups to find the root highlighting scheme
while GroupDetails =~ "links to"
let index = stridx(GroupDetails, "links to") + len("links to")
let LinkedGroup = strpart(GroupDetails, index + 1)
redir => GroupDetails
exe "silent hi " . LinkedGroup
redir END
endwhile
" Extract the highlighting details (the bit after "xxx")
let MatchGroups = matchlist(GroupDetails, '\<xxx\>\s\+\(.*\)')
let ExistingHighlight = MatchGroups[1]
" Check whether there's an existing gui= block
let MatchGroups = matchlist(ExistingHighlight, '^\(.\{-}\) gui=\([^ ]\+\)\( .\{-}\)\?$')
if MatchGroups != []
" If there is, check whether "bold" is already in it
let StartHighlight = MatchGroups[1]
let GuiHighlight = MatchGroups[2]
let EndHighlight = MatchGroups[3]
if GuiHighlight =~ '.*bold.*'
" Already done
return
endif
" Add "bold" to the gui block
let GuiHighlight .= ',bold'
let NewHighlight = StartHighlight . GuiHighlight . EndHighlight
else
" If there's no GUI block, just add one with bold in it
let NewHighlight = ExistingHighlight . " gui=bold"
endif
" Create the highlighting group
exe "hi " . a:group . " " NewHighlight
endfunction