Проблема в том, что механизм регулярных выражений vim очень медленный, и я думаю, что латекс довольно требователен к регулярным выражениям.
Я смог получить VIM немного быстрее, выполнив:
:syn clear texSectionFold :syn clear texPreamble
Это были основные синтаксические регулярные выражения группы.
Я нашел их, сделав:
:syntime on
Теперь нажмите ctrl+L
кучу раз и подождите, пока Vim не догонит. Затем:
:syntime report
Это дало следующий вывод:
TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 8.903872 1911 52 0.017387 0.004659 texSectionFold \v%(%(\\begin\.*$\n)@<=^|\\section) 4.979438 1859 0 0.016382 0.002679 texPreamble \v%(\\documentclass)@= 0.634906 1976 182 0.010863 0.000321 texEnvName \v%(\\%(begin|end)\{)@<=\a+\*?\ze\} 0.373173 1859 0 0.000880 0.000201 texArgsEnvNormReq \v(\\begin\{%(theorem|lemma|proposition|corollary|conjecture|definition|remark|example|proof)\*?\}\s*)@<=\{ 0.317732 1859 0 0.000468 0.000171 texArgsEnvNormOpt \v(\\begin\{%(theorem|lemma|proposition|corollary|conjecture|definition|remark|example|proof)\*?\}\s*)@<=\[ 0.223595 1859 0 0.000341 0.000120 texDimen \v-?%(\.[0-9]+|([0-9]+(\.[0-9]+)?))%(pt|pc|bp|in|cm|mm|dd|cc|sp|ex|em)> ...
Таким образом, вы можете видеть, что эти два регулярных выражения намного дороже, чем другие. Я не использую складки, поэтому у меня не было проблем с отключением этого. Не уверен, почему найти преамбулу так медленно.
Возможно, это вам тоже поможет, @llinfeng. Я надеюсь, что это так!
РЕДАКТИРОВАТЬ:
Чтобы запустить эти syn clear
команды при запуске vim, вам нужно их ввести ~/.vim/after/syntax/tex.vim
. Он не будет работать в ftplugin
файле, так как определения синтаксиса еще не загружены в этот момент.
EDIT2:
Оказывается, некоторые из синтаксических групп, которые я выложил выше, взяты из плагина. Отключение плагина не помогает, так как некоторые другие группы синтаксиса работают медленно. Eesh!
Мое окончательное исправление, и все, что я прошу из выделения синтаксиса, это:
$ cat ~/.vim/after/syntax/tex.vim syn clear syn match texComment "%.*$" hi def link texComment Comment
Это действительно быстро.