Vim se ralentiza con el tiempo con la sintaxis activada

11

¿Hay algo que pueda hacer para mantener syntax onal usar Vim?

Tan pronto como abro algo sustancial, se vuelve casi imposible editar después de un tiempo. Cada pulsación de tecla provoca un retraso. Si apago el resaltado de sintaxis o reinicio vim, está bien nuevamente.

Lo synmaxcolconfiguré en 120. El archivo ruby ​​de muestra tiene solo 59 líneas y no supera los 80 caracteres.

Estoy usando vim-rubyy vim-rails.

El problema es que el retraso parece acumularse con el tiempo. Cuando abro el archivo desde cero, está bien. Después de un tiempo se vuelve más y más lento.

firedev
fuente
1
¿Has intentado replicar esto con vim -Nu NONE -c 'syntax on'? ¿Has seguido los consejos de depuración en esta publicación
Akshay
¿Qué tipo de archivo? ¿Alguna?
romainl
1
Rubí. De hecho, es editable, por -u NONElo que debe ser algún complemento. Supongo que la respuesta a la mayoría de las preguntas es 'deshabilitar complementos hasta que encuentre al culpable' :(
firedev
Pero el problema es que la demora parece acumularse con el tiempo. Cuando abro el archivo desde cero, está bien. Después de un tiempo se vuelve más y más lento.
firedev

Respuestas:

13

Las versiones recientes de Vim tienen un :syntimecomando para solucionar problemas de lentitud del resaltado de sintaxis al generar un informe de cuánto tiempo tarda cada grupo de sintaxis en coincidir. Esto es muy útil y rápidamente le permite encontrar al culpable; El único inconveniente es que necesita una compilación (generalmente "ENORME") de Vim con el perfil habilitado. :help :syntimeproporciona buenas instrucciones sobre cómo emplearlo.

Alternativamente, puede intentar eliminar secuencias de comandos de sintaxis individuales de ~/.vim/syntax/y $VIMRUNTIME/syntax/(de acuerdo con la actual 'filetype'), y luego profundizar eliminando partes de las definiciones de sintaxis dentro de la secuencia de comandos.

Ingo Karkat
fuente
Hmm interesante, parece que esto es algo relacionado con las etiquetas. La línea superior que lleva más tiempo tiene métodos de mis otros proyectos. 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?\ ....- esto es claramente de la otra carpeta. ¿Deshabilitar etiquetas?
firedev
¿Utiliza un complemento que resalta etiquetas, como vim-easytags ? Eso podría causar la desaceleración.
Ingo Karkat
Sí, lo deshabilitó, no los números vuelven a estar sanos. Gracias.
firedev
Hmm ahora está actuando de nuevo, esta vez es: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - ¿Algo que pueda hacer al respecto?
firedev
2
Podría ser el nuevo motor regexp; intente :set regexpengine=1(mejor en una nueva instancia de Vim, antes de abrir el archivo Ruby).
Ingo Karkat
5

Otro cuello de botella típico en el resaltado de sintaxis de vim es el plegado. La edición puede volverse muy lenta si un pliegue contiene muchos elementos de sintaxis (lo que básicamente significa que pasa por muchas líneas), porque vim actualizará toda la sintaxis para cada carácter insertado.

Si esto es lo que está experimentando, le sugiero el uso del complemento FastFold . Este complemento identifica los pliegues de sintaxis y los reemplaza por pliegues manuales, lo que hace que la sintaxis de vim se resalte mucho más rápido.

Vitor
fuente
1

Esto es lo que hice al final:

  • Remoto xolox/vim-easytags
  • Remoto xolox/vim-misc
  • Reemplazado kien/ctrlp d11wtq/ctrlp_bdeletey tacahiroy/ctrlp-funkycon junegunn/fzf
  • Conjunto regexpengine=1

En este momento, Vim es suave como la mantequilla, pero ya no tengo etiquetas. Suspiro...

firedev
fuente
1
Vim tiene etiquetas de soporte incorporadas. No necesita ningún complemento de terceros (aparte de ctags para generar el archivo de etiquetas, por supuesto). Vea el artículo Effortless Ctags With Git de Tim Pope. Yo uso esto y funciona de maravilla. También vea :help tag-commandssaltar a una etiqueta. Considero que las etiquetas son bastante esenciales cuando trabajo con Vim. Hace que la navegación sea súper simple, ¡e incluso puedes completarla automáticamente :help i_Ctrl-x_Ctrl-]!
akshay