Поля синтаксиса подсветки синтаксиса Vim

Я пытаюсь написать файл синтаксиса vim для файлов дампа SVN. Часть, которую я не могу понять, – это раздел:

Fooprop: Val1 Text-content-length: 20 Barprop: Val2 <- Blank line abcdefghi abcdefghi Next-item-prop: Val3 

Как настроить правило синтаксиса, в котором указано «N символов после первой пустой строки, следующей за« Длина текста-содержимого: N », где N – число»?

  • Запуск комбинации клавиш vim при запуске
  • «Аббревиатура» для dd $, если текущая строка пуста
  • Почему мои методы dict работают хорошо, не определяя дополнительный аргумент `dict`?
  • Как написать команду в vim для запуска нескольких команд?
  • Отображать символы замены для свободного места в Vim
  • Странное поведение VIM
  • Выбрать строки, используя диапазоны в Vim?
  • Существует ли имя файла FileType для файлов без суффикса в vim?
  • One Solution collect form web for “Поля синтаксиса подсветки синтаксиса Vim”

    Вам нужно будет указать длину текста в другом регулярном выражении. Поскольку Vim (в отличие от Perl) не позволяет оценивать выражения Vimscript внутри регулярных выражений, вам нужно прибегнуть к метапрограммированию , то есть построить правила синтаксиса «на лету»:

     :execute 'syntax match svndumpData /^\n\_.\{' . length . '}/' 

    Этот простой эскиз использует \_. для соответствия любому символу (включая символы новой строки) для \{N} раз. Вы должны быть осторожны относительно длины новой строки (CR-LF против LF) и кодировок (количество символов не обязательно равно количеству байтов для их представления!)

    Это работает, потому что для каждого обнаружения используется синтаксический плагин, а синтаксис применяется к текущему буферу.

    альтернатива

    Поскольку это довольно сложно и может не работать, если у вас есть счет байта (для которого не существует атома регулярного выражения) вместо длины символа, всегда существует прагматичное 80% -ное решение, которое игнорирует подсчет содержащихся символов и просто определяет область синтаксиса на окружающие участки собственности. Это не будет правильным во всех случаях, но, вероятно, хорошо работает для большинства данных.

    Linux и Unix - лучшая ОС в мире.