Я пытаюсь выяснить, как выделить определенную часть совпадения в vim.
С учетом следующего примера правила (взято из файла синтаксиса coffeescript source ):
syn match coffeeExtendedOp /\%(\S\s*\)\@<=[+\-*/%&|\^=!<>?.]\+\|[-=]>\|--\|++\|:/ display
Это регулярное выражение соответствует различным операторам coffeescript.Операторы подсвечиваются (в моем vimrc
) следующим образом:
hi Operator guifg=#ff0000
Например, поскольку coffeeExtendedOp связан с coffeeOperator, который связан с Operator, в приведенном выше исходном файле.Это все работает, но мне интересно, как конкретно выделить оператор ++
, соответствующий приведенному выше syn match
, другим цветом, скажем синим, внутри моего vimrc
(то есть без изменения исходного исходного файла выше),Мне просто интересно, возможно ли это.
РЕДАКТИРОВАТЬ : я думаю, что правила помещены под кластером , поэтому, возможно, именно поэтому это ни на что не влияет.Есть ли способ получить доступ к правилу внутри кластера?
РЕДАКТИРОВАТЬ : Вопрос был уточнен.
Решение:
syn match plusplus /++/ contained containedin=coffeeExtendedOp display
hi plusplus guifg=#0000ff
Проблема сейчасв том, что это работает только когда я запускаю их как команды в vim, но не когда я помещаю это в мой файл vimrc
.Есть идеи?Может быть, материал спрятан за кластером?Но тогда почему это видно в vim через команду?Я пробовал , включая файл синтаксиса , но, похоже, он не дал никакого эффекта.