Подсветка синтаксиса Vim - PullRequest
2 голосов
/ 17 июня 2011

Хорошо, это, наверное, глупый вопрос, но ....

У меня есть файл исходного кода на проприетарном языке. Я хочу отредактировать указанный файл с помощью VIM вместо их грубого редактора. Я бы хотел базовую подсветку синтаксиса языка, но я не хочу тратить кучу времени на раскрутку своего собственного файла синтаксиса.

Следовательно, есть ли в VIM модуль подсветки исходного кода? Оно не должно быть идеальным, я просто хочу, чтобы оно охватывало простые вещи. В настоящее время я могу выбрать только подсветку синтаксиса, выбрать произвольный язык или выбрать свой собственный.

РЕДАКТИРОВАТЬ: Пример исходного кода ниже

{
    function letter do
        gposition 0, 0
        if gender = "M" do
            if language = "SPA" OR state = "PR" do
                %male spanish letter
                gposition .26, .75
                pdfimage "MALE SPANISH.pdf", 1, .93

                setcolor truewhite
                setfillmode 1
                %whitebox
                gposition 5.25, 1.25
                rectangle 2.5, .5

Ответы [ 2 ]

5 голосов
/ 17 июня 2011

Может ли это быть правильным языком?

http://www.iml.ece.mcgill.ca/~stephan/node/17

3 голосов
/ 17 июня 2011

Свернуть свою собственную подсветку синтаксиса не вообще сложно, и это займет несколько минут.

Например, я написал DSL (называемый Konira), который по большей части использует Python, но он не выделяет мои собственные операторы DSL. Вот как выглядит «дополнительная» подсветка:

function! KoniraSyntax() abort
    let b:current_syntax = 'konira'
    syn match KoniraIt                   '\v^\s+it\s+'
    syn match KoniraSkipIf               '\v^\s+skip\s+if'
    syn match KoniraDescribe             '\v^describe\s+'
    syn match KoniraRaises               '\v^\s+raises\s+'
    syn match KoniraBeforeAll            '\v^\s+before\s+all'
    syn match KoniraBeforeEach           '\v^\s+before\s+each'
    syn match KoniraAfterEach            '\v^\s+after\s+each'
    syn match KoniraAfterAll             '\v^\s+after\s+all'

    hi def link KoniraSkipIf             Statement
    hi def link KoniraIt                 Statement
    hi def link KoniraDescribe           Statement
    hi def link KoniraRaises             Identifier
    hi def link KoniraBeforeAll          Statement
    hi def link KoniraBeforeEach         Statement
    hi def link KoniraAfterAll           Statement
    hi def link KoniraAfterEach          Statement
endfunction

Как вы можете видеть выше, я устанавливаю текущий синтаксис, затем сопоставляю с помощью регулярного выражения те заявления, которые я хочу, и я применяю тип подсветки, который мне нужен для этого соответствия.

И вы можете вызывать ее как обычную функцию, когда знаете (или можете обнаружить), что редактируете такой исходный файл:

call KoniraSyntax()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...