O Vim diminui com o tempo com a sintaxe ativada.


11

Existe algo que eu possa fazer para manter o syntax onuso do Vim?

Assim que abro algo substancial, torna-se quase impossível editar depois de um tempo. Cada pressionamento de tecla causa um atraso. Se eu desativar o realce da sintaxe ou reiniciar o vim - tudo bem novamente.

Eu synmaxcolconfigurei para 120. O arquivo ruby ​​de amostra tem apenas 59 linhas e não excede 80 caracteres.

Eu estou usando vim-rubye vim-rails.

O problema é que o atraso parece se acumular ao longo do tempo. Quando abro o arquivo do zero, tudo bem. Depois de um tempo, fica cada vez mais lento.


1
Você tentou replicar isso com vim -Nu NONE -c 'syntax on'? Você seguiu as dicas de depuração nesta postagem
akshay

Que tipo de arquivo? Qualquer?
Romainl 10/04

1
Rubi. Na verdade, é editável com, -u NONEentão deve haver algum plugin então. Acho que a resposta para a maioria das perguntas é 'desativar plugins até encontrar o culpado' :(
firedev 10/04/2015

Mas o problema é - o atraso parece se acumular ao longo do tempo. Quando abro o arquivo do zero, tudo bem. Depois de um tempo, fica cada vez mais lento.
firedev

Respostas:


13

As versões recentes do Vim têm um :syntimecomando para solucionar problemas de lentidão do destaque da sintaxe, gerando um relatório de quanto tempo cada grupo de sintaxe leva para corresponder. Isso é muito útil e rapidamente permite que você encontre o culpado; a única desvantagem é que você precisa de uma construção (geralmente "ENORME") do Vim com a criação de perfis ativada. :help :syntimefornece boas instruções de como empregá-lo.

Como alternativa, você pode tentar remover scripts de sintaxe individuais de ~/.vim/syntax/e $VIMRUNTIME/syntax/(de acordo com o atual 'filetype') e, em seguida, detalhar ainda mais, removendo partes das definições de sintaxe dentro do script.


Hmm interessante, parece que isso é algo relacionado a tags. A linha superior que leva mais tempo tem métodos de meus outros projetos. TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 0.129674 247 182 0.002365 0.000525 rubyMethodNameTag \C\<\%(roi\|paginate\|admin_index_attributes\|facilities\|manager\|net_price?\ ....- isso é claramente da outra pasta. Desativar tags?
firedev

Você usa um plugin que destaca tags, como vim-easytags ? Isso pode realmente causar a desaceleração.
Ingo Karkat

Sim, desativou, não os números são sãos novamente. Obrigado.
firedev

Hmm agora está agindo de novo, desta vez é: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - Tudo o que posso fazer sobre isso?
firedev

2
Pode ser o novo mecanismo regexp; try :set regexpengine=1(melhor em uma nova instância do Vim, antes de abrir o arquivo Ruby).
Ingo Karkat

5

Outro gargalo típico no destaque da sintaxe do vim é dobrar. A edição pode ficar muito lenta se uma dobra contiver muitos itens de sintaxe (o que basicamente significa que ela percorre muitas linhas), porque o vim atualizará toda a sintaxe de cada caractere inserido.

Se é isso que você está enfrentando, sugiro o uso do plugin FastFold . Este plug-in identifica dobras de sintaxe e as substitui por dobras manuais, tornando a sintaxe do vim realçada muito mais rapidamente.


1

Aqui está o que eu fiz no final:

  • Removido xolox/vim-easytags
  • Removido xolox/vim-misc
  • Substituído kien/ctrlp d11wtq/ctrlp_bdeletee tacahiroy/ctrlp-funkycom junegunn/fzf
  • Conjunto regexpengine=1

No momento, o Vim é suave como manteiga, mas não tenho mais tags. Suspiro...


1
O Vim possui tags suportadas. Você não precisa de plugins de terceiros (exceto ctags para gerar o arquivo de tags, é claro). Veja o artigo Ctags sem esforço com Git de Tim Pope. Eu uso isso e faz maravilhas. Veja também :help tag-commandspara pular para uma tag. Considero as ctags bastante essenciais ao trabalhar com o Vim. Isso torna a navegação super simples e você pode até se autocompletar :help i_Ctrl-x_Ctrl-]!
akshay

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.