как «слишком много PHP» сказал, что нет прямого способа сказать «создать значение, похожее на это, и добавить жирный шрифт». Лучший способ - изменить цветовую схему. Если вы не используете настраиваемую цветовую схему, скопируйте ее из основного каталога установки vim в каталог ~/.vim/colors и отредактируйте его в соответствии с вашими потребностями. Кроме того, выполните поиск на странице скриптов vim и попробуйте некоторые из доступных.
Бесстыдная штепсельная вилка: если вы хотите, чтобы это было легче редактировать, чем в стандартном формате, попробуйте мой "Bandit" colour scheme.
Если вы действительно хотите, чтобы иметь возможность добавить смелые на лету, вам понадобится довольно сложный сценарий, как показано ниже. Обратите внимание, что это не будет сохранено для следующей сессии, если вы не вызываете его автоматически после загрузки цветовой схемы или делать что-то вроде:
: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
Shameless вилка: Если вы не хотите, чтобы скопировать все colorschemes в вашу .vim папку [плагин] (http://www.vim.org/scripts/script.php?script_id=1641) позволяет вносить небольшие настройки в .vim/after/colors. И Браво для публикации этого кода, я бы дал вам +4, если бы мог. –
@too much php: Этот плагин выглядит хорошо, спасибо за ссылку (и за Bravo!) – DrAl
Добавьте этот код перед этой строкой: «Извлеките детали подсветки (бит после« xxx ») (Нацисты проигнорировали мое редактирование по какой-то причине, и они неправильны. Вам нужен этот код, иначе регулярное выражение не будет работать так, как ожидалось, если verbose включен): «Вывод подсветки в режиме подсвечивания, см.: help highlight-verbose if & verbose let GroupDetails = substitute (GroupDetails, '\ s \ + \ Last set from \ _. *', '', 'G') endif – FocusedWolf