Возможно ли, чтобы команда синтаксического файла Vim занимала несколько строк? - PullRequest
4 голосов
/ 13 октября 2009

Я пытаюсь создать файл синтаксиса и хочу создать несколько групп ключевых слов для выделения разных цветов (например, зарезервированные слова, операторы и т. Д. Могут быть разных цветов) Я могу заставить это работать, выполнив одну из следующих двух опций:

Вариант 1

syn keyword MyLangOperators operator1 operator2 operator3
syn keyword MyLangOperators operator4 operator5 operator6

syn keyword MyLangReserved reserved1 reserved2 reserved3
syn keyword MyLangReserved reserved4 reserved5 reserved6

Это не так уж плохо, но если я пытаюсь держать их в алфавитном порядке, то становится очень грязно, когда число зарезервированных / операторов и т.д. Особенно, если вам нужно добавить новые где-то посередине.

Вариант 2

syn keyword MyLangOperators operator1
syn keyword MyLangOperators operator2
syn keyword MyLangOperators operator3
syn keyword MyLangOperators operator4
syn keyword MyLangOperators operator5
syn keyword MyLangOperators operator6

syn keyword MyLangReserved reserved1
syn keyword MyLangReserved reserved2
syn keyword MyLangReserved reserved3
syn keyword MyLangReserved reserved4
syn keyword MyLangReserved reserved5
syn keyword MyLangReserved reserved6

Эту опцию намного проще добавить зарезервированные / операторы позже, потому что их легко хранить в алфавитном порядке. Однако в каждой строке много повторяющегося текста (т. Е. Ключевое слово syn [имя_группы]).

Есть ли какой-нибудь возможный способ разбить команду на несколько строк? Может быть, что-то вроде этого:

syn keyword MyLangOperators ~
    operator1 ~
    operator2 ~
    operator3 ~
    operator4 ~
    operator5 ~
    operator6

syn keyword MyLangReserved ~
    reserved1 ~
    reserved2 ~
    reserved3 ~
    reserved4 ~
    reserved5 ~
    reserved6

В этом случае тильда (~) будет сигналом для редактора Vim о том, что команда продолжается на следующей строке.

Есть что-нибудь подобное или я застрял с вариантом 1 или 2 (скорее всего, я бы пошел с 2)?

1 Ответ

7 голосов
/ 13 октября 2009

это сделает это (:help line-continuation)

syn keyword MyLangOperators
    \ operator1
    \ operator2
    \ operator3
    \ operator4
    \ operator5
    \ operator6
...