В файле синтаксиса VIM, как я могу использовать начало матча в конце матча? - PullRequest
4 голосов
/ 16 июня 2011

В файлах синтаксиса VIM можно записать синтаксическое соответствие области следующим образом:

syn region xqString start=+'+ end=+'+
syn region xqString start=+"+ end=+"+

Вместо этого я хочу написать

syn region xqString start=+(['"])+ end=+\1+

где \ 1 - совпадение, найденное в начале. Любые ответы о том, как это сделать, или если это невозможно?

1 Ответ

1 голос
/ 16 июня 2011

См. :help :syn-ext-match

Внешние совпадения : syn-ext-match

Эти дополнительные элементы регулярного выражения доступны в шаблонах регионов:

        */\z(* */\z(\)* *E50* *E52*
\z(\) Marks the sub-expression as "external", meaning that it is can
be accessed from another pattern match.  Currently only usable
in defining a syntax region start pattern.

      */\z1* */\z2* */\z3* */\z4* */\z5*
\z1  ...  \z9     */\z6* */\z7* */\z8* */\z9* *E66* *E67*
Matches the same string that was matched by the corresponding
sub-expression in a previous start pattern match.

Так что вы могли бы сделать syn region xqString start=+\z(['"]\)+ skip=+\\.+ end=+\z1+

...