O problema é que o mecanismo de expressão regular do vim é muito lento, e eu acho que o latex é muito exigente no regex.
Consegui obter o vim um pouco mais rápido:
:syn clear texSectionFold
:syn clear texPreamble
Estas foram as principais expressões regulares do grupo de sintaxes ofensivas.
Eu os encontrei fazendo:
:syntime on
Agora pressione ctrl+L
uma tonelada de vezes e espere o vim se atualizar. Então:
:syntime report
Isso deu a seguinte saída:
TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN
8.903872 1911 52 0.017387 0.004659 texSectionFold \v%(%(\begin\{document\}.*$\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)>
...
Então você pode ver que essas duas expressões regulares são muito mais caras que outras. Eu não uso dobras, então não tive problema em desabilitar isso. Não tenho certeza porque encontrar o preâmbulo é tão lento.
Talvez isso também ajude você, @llinfeng. Eu espero que sim!
EDITAR:
Para executar os comandos syn clear
quando o vim iniciar, você precisará colocá-los em ~/.vim/after/syntax/tex.vim
. Não funcionará em um arquivo ftplugin
, pois as definições de sintaxe ainda não foram carregadas nesse ponto.
EDIT2:
Acontece que alguns dos grupos de sintaxe que eu postei acima vieram de um plugin. Desativar o plugin não ajuda, pois alguns outros grupos de sintaxe são lentos. Eesh!
Minha correção final, e tudo que eu peço a partir do destaque da sintaxe, é:
$ cat ~/.vim/after/syntax/tex.vim
syn clear
syn match texComment "%.*$"
hi def link texComment Comment
É muito rápido.