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

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

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

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

  • Vim замерзает на короткое время
  • Как выбрать / удалить до конца файла в vim / gvim?
  • Как заменить каждое вхождение строки инкрементным счетчиком в vim?
  • Клавиша «Удалить» не работает в режиме вставки vim для удаления ранее введенного содержимого
  • Есть ли способ узнать, что я нахожусь в самом левом расколе?
  • Как приостановить историю VIM?
  • vim: как открыть несколько файлов на разные вкладки
  • Как я могу заставить vim вернуться к обычным вкладкам?
  • One Solution collect form web for “Поля синтаксиса подсветки синтаксиса Vim”

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

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

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

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

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

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

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