Директива syntax include
специально предназначена для выполнения подобных задач, а xml.vim
(в последних версиях ваша может отличаться) имеет кластер "hook" под названием xmlCdataHook
, который вы можете переопределить с помощью своих собственных файлов синтаксиса .
Откройте файл синтаксиса xml.vim
и добавьте следующую строку:
syn include @xmlCdataHook <sfile>
Это дает вам подсветку синтаксиса xml внутри разделов CDATA. Укажите другой файл, например <sfile>:p:h/javascript.vim
, чтобы получить подсветку JavaScript.
Кроме того, вы можете избежать редактирования файла xml.vim
и просто добавить свой собственный синтаксический хук для разделов CDATA:
syntax include @JS $VIMRUNTIME/syntax/javascript.vim
syntax region start=/\V<![CDATA[/ end=/\V]]>/ contains=@JS