Vim сповільнюється з часом із увімкненим синтаксисом


11

Чи можу я щось утримати syntax onпід час використання Vim?

Як тільки я відкриваю щось істотне, через деякий час редагувати це стає майже неможливо. Кожне натискання клавіш викликає затримку. Якщо я відключу підсвічування синтаксису або відновлюю vim - це знову добре.

Я synmaxcolвстановив 120. Зразок рубінового файлу довжиною всього 59 рядків і не перевищує 80 символів.

Я використовую vim-rubyі vim-rails.

Проблема полягає в тому, що затримка, здається, накопичується з часом. Коли я відкриваю файл з нуля, це добре. Через деякий час воно стає повільніше і повільніше.


1
Ви спробували це повторити vim -Nu NONE -c 'syntax on'? Ви дотримувались порад щодо налагодження в цій публікації
akshay

Який тип файлів? Будь-який?
romainl

1
Рубін. Адже це можна редагувати, -u NONEтому він повинен бути плагіном. Вгадайте, що відповідь на більшість питань - «вимкнути плагіни, поки ви не знайдете винуватця» :(
звільнений

Але проблема полягає в тому, що затримка, здається, накопичується з часом. Коли я відкриваю файл з нуля, це добре. Через деякий час воно стає повільніше і повільніше.
звільнений

Відповіді:


14

Останні версії Vim мають :syntimeкоманду усунути повільність виділення синтаксису, генеруючи звіт про те, скільки часу кожній групі синтаксису потрібно відповідати. Це дуже корисно і швидко дозволяє знайти винуватця; Єдиним недоліком є ​​те, що вам потрібна (ВЕЛИЧЕЗНА) збірка Vim з увімкненим профілем. :help :syntimeдає хороші вказівки, як його використовувати.

Крім того, ви можете спробувати видалити окремі сценарії синтаксису з ~/.vim/syntax/та $VIMRUNTIME/syntax/(відповідно до поточного 'filetype'), а потім додатково розгорнути, видаливши частини визначення синтаксису всередині сценарію.


Хм, цікаво, це здається, що це теги, пов'язані. У верхньому рядку, який займає найбільше часу, є методи з інших моїх проектів. 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?\ ....- це чітко з іншої папки. Вимкнути теги?
звільнений

Чи використовуєте ви плагін, який виділяє теги, наприклад, vim-easytags ? Це справді може спричинити уповільнення.
Інго Каркат

Так, вимкнено це, а не номери повторюються. Дякую.
звільнений

Гм, зараз він знову діє, на цей раз це: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - Що я можу з цим зробити?
звільнений

2
Це може бути новий двигун regexp; спробуйте :set regexpengine=1(найкраще в новому екземплярі Vim, перш ніж відкривати файл Ruby).
Інго Каркат

5

Ще одна типова вузька клітка в синтаксисі vim - це складання. Редагування може стати дуже повільним, якщо складка містить багато елементів синтаксису (що в основному означає, що вона переходить через багато рядків), оскільки vim оновить увесь синтаксис для кожного вставленого символу.

Якщо це те, що ви відчуваєте, тоді я пропоную використовувати плагін FastFold . Цей плагін ідентифікує складки синтаксису та замінює їх ручними складками, завдяки чому синтаксис vim виділяється значно швидше.


1

Ось що я зробив у підсумку:

  • Вилучено xolox/vim-easytags
  • Вилучено xolox/vim-misc
  • Замінено kien/ctrlp d11wtq/ctrlp_bdeleteі tacahiroy/ctrlp-funkyс junegunn/fzf
  • Встановити regexpengine=1

Зараз Vim гладкий, як масло, але я більше не маю тегів. Зітхніть ...


1
Vim має вбудовану підтримку тегів. Вам не потрібні сторонні плагіни (крім ctags, звичайно, для створення файлу тегів). Дивіться статті про легкі каталоги зі статтею Git Тіма Попа. Я цим користуюся, і це творить чудеса. Також дивіться, :help tag-commandsщоб перейти до тегу. Я вважаю ctags досить важливими при роботі з Vim. Це робить навігацію дуже простою, і ви навіть можете автозавершити :help i_Ctrl-x_Ctrl-]!
акшай

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.