Как узнать, какие плагины делают Vim медленным?
есть ли способ профилировать Плагины Vim?
мой MacVim становится все медленнее и медленнее, когда я открываю большой .py. Я знаю, что могу отменить выбор всех плагинов и повторно выбрать один за другим, чтобы проверить, какой плагин является виновником, но есть ли более быстрый способ?
мой dotvim здесь:https://github.com/charlax/dotvim
5 ответов:
вы можете использовать встроенную поддержку профилирования: после запуска vim do
:profile start profile.log :profile func * :profile file * " At this point do slow actions :profile pause :noautocmd qall!(в отличие от отказа
noautocmdна самом деле не требуется, это просто делает Vim выйти быстрее).Примечание: Вы не получите информацию о функциях, которые были удалены до выхода vim.
Я нашел еще один очень полезный метод Vim buildin, чтобы показать точное время сообщения При загрузке вашего .vimrc.
vim --startuptime timeCost.txt timeCost.txtпожалуйста, запустите:
:help --startuptimeв VIM, чтобы получить дополнительную информацию.
это может быть плагин или подсветка синтаксиса; попробуйте
:syntax offкогда это произойдет и посмотреть, будет ли Vim мгновенно становится быстрее.С помощью плагинов, "общей медлительности", как правило, исходит из автокоманды; а
:autocmdперечисляет их все. Исследуйте, убивая некоторых из них через:autocmd! [group] {event}. Исходить из более частых событий (т. е.CursorMoved[I]) к менее частым (напримерBufWinEnter).если вы можете несколько надежно воспроизвести медлительность, двоичный поиск может помочь: отодвинуть половину из файлов в
~/.vim/plugin/, затем другой, повторите в наборе, который был медленным.Если вам действительно нужно заглянуть под капот, получите версию Vim, которая имеет включено. (Не ванильный большой версии Windows, но тот, который поставляется совместно с Cygwin был он; кроме того, самостоятельное составление достаточно легко в большинстве дистрибутивов.)
Я нашел полезным распечатать все действия Vim в файл, запустив Vim с помощью :
vim -V12logЭто обеспечивает максимальную детализацию (Уровень 12) и выводит его в файл
log. Затем вы можете выполнить некоторые действия Vim, которые вы знаете, чтобы быть медленным, а затем посмотреть, какие функции/сопоставления вызываются внутренне.
если у вас возникли проблемы с операциями обновления экрана (
^L, прокрутка и т. д.) будучи медленным, ваша проблема может быть неэффективным файлом подсветки синтаксиса. Вы можете проверить это, временно отключив подсветку синтаксиса (:syn off) и посмотреть, если проблема уходит; если вы хотите, чтобы копаться в деталях, вы можете профилировать текущий файл синтаксиса с помощью:syntime:
- откройте файл, который вызывает проблемы с производительностью подсветки синтаксиса.
- выполнить
:syntime onначать профилирование.- прокрутите файл немного.
- выполнить
:syntime reportсоздать отчет. Паттерны, перечисленные первыми в отчете, - это те, на обработку которых ушло больше всего времени.
Comments