Vim rallenta nel tempo con la sintassi attiva


11

C'è qualcosa che posso fare per syntax onusare Vim?

Non appena apro qualcosa di sostanziale, diventa quasi impossibile modificarlo dopo un po '. Ogni pressione del tasto provoca un ritardo. Se disattivo l'evidenziazione della sintassi o riavvio vim, va di nuovo bene.

Ho synmaxcolimpostato 120. Il file ruby ​​di esempio è lungo solo 59 righe e non supera gli 80 caratteri.

Sto usando vim-rubye vim-rails.

Il problema è che il ritardo sembra accumularsi nel tempo. Quando apro il file da zero, va bene. Dopo un po 'diventa sempre più lento.


1
Hai provato a replicarlo con vim -Nu NONE -c 'syntax on'? Hai seguito i suggerimenti per il debug in questo post
akshay,

Quale tipo di file? Qualunque?
Romainl

1
Rubino. In effetti è modificabile con -u NONEquindi quindi deve essere un plug-in. Indovina che la risposta alla maggior parte delle domande è "disabilita i plug-in fino a quando non trovi il colpevole" :(
firedev

Ma il problema è che il ritardo sembra accumularsi nel tempo. Quando apro il file da zero, va bene. Dopo un po 'diventa sempre più lento.
firedev,

Risposte:


13

Le versioni recenti di Vim hanno un :syntimecomando per risolvere la lentezza dell'evidenziazione della sintassi generando un rapporto su quanto tempo impiega ciascun gruppo di sintassi a corrispondere. Questo è molto utile e ti consente di trovare rapidamente il colpevole; l'unico aspetto negativo è che hai bisogno di una build (di solito "ENORME") di Vim con il profilo abilitato. :help :syntimefornisce buone istruzioni su come utilizzarlo.

In alternativa, puoi provare a rimuovere singoli script di sintassi da ~/.vim/syntax/e $VIMRUNTIME/syntax/(in base all'attuale 'filetype'), quindi eseguire ulteriori approfondimenti rimuovendo parti delle definizioni di sintassi all'interno dello script.


Hmm interessante, sembra che questo sia qualcosa che riguarda i tag. La linea superiore che richiede più tempo ha metodi dai miei altri progetti. 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?\ ....- questo è chiaramente dall'altra cartella. Disabilitare i tag?
firedev,

Utilizzi un plug-in che evidenzia tag, come vim-easytags ? Ciò potrebbe effettivamente causare il rallentamento.
Ingo Karkat,

Sì, disabilitato, non i numeri sono di nuovo sani di mente. Grazie.
firedev,

Hmm ora si sta comportando di nuovo, questa volta è: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - Qualcosa che posso fare al riguardo?
firedev,

2
Potrebbe essere il nuovo motore regexp; provare :set regexpengine=1(meglio in una nuova istanza di Vim, prima di aprire il file Ruby).
Ingo Karkat,

5

Un altro collo di bottiglia tipico nell'evidenziazione della sintassi di Vim è la piegatura. La modifica può diventare molto lenta se una piega contiene molti elementi di sintassi (il che significa sostanzialmente che passa su molte righe), perché vim aggiornerà tutta la sintassi per ogni carattere inserito.

Se questo è ciò che stai vivendo, ti suggerisco di utilizzare il plugin FastFold . Questo plugin identifica le pieghe della sintassi e le sostituisce con le pieghe manuali, rendendo l'evidenziazione della sintassi di Vim molto più veloce.


1

Ecco cosa ho fatto alla fine:

  • Rimosso xolox/vim-easytags
  • Rimosso xolox/vim-misc
  • Sostituito kien/ctrlp d11wtq/ctrlp_bdeletee tacahiroy/ctrlp-funkycon junegunn/fzf
  • Impostato regexpengine=1

In questo momento Vim è liscio come il burro ma non ho più tag. Sospiro...


1
Vim ha i tag supportati integrati. Non è necessario alcun plug-in di terze parti (a parte ctags per generare ovviamente il file tag). Vedi l' articolo Ctags With Git senza sforzo di Tim Pope. Lo uso e funziona a meraviglia. Vedi anche :help tag-commandsper saltare a un tag. Ritengo che i tag siano piuttosto essenziali quando si lavora con Vim. Rende la navigazione super semplice e puoi persino completarla automaticamente :help i_Ctrl-x_Ctrl-]!
akshay,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.