Есть ли способ профилировать плагины Vim?
Мой MacVim становится все медленнее и медленнее, когда я открываю большой .py
. Я знаю, что могу отменить выбор всех плагинов и повторно выбрать один за другим, чтобы проверить, какой плагин является виновником, но есть ли более быстрый способ?
Мой dotvim здесь: https://github.com/charlax/dotvim
debugging
optimization
vim
macvim
charlax
источник
источник
.py
файлов.autocmd
Предчувствие Инго Карката кажется мне наиболее правдоподобным.autocmd
выглядит круто. Только что попробовал, но сейчас Вим не спешит.folding=syntax
может замедлиться. Попробовалfolding=manual
и теперь все отлично работаетОтветы:
Вы можете использовать встроенную поддержку профилирования: после запуска vim do
(в отличие от выхода, на
noautocmd
самом деле не требуется, он просто ускоряет выход vim).Примечание: вы не получите информацию о функциях, которые были удалены до выхода из vim.
источник
:set more | verbose function {function_name}
покажет вам содержимое функции и где оно находится.profile.log
получается файл в текущем каталоге вашего сеанса Vim.profile.log
чтобы увидеть список функций, отсортированных по общему времени (profile.log
мне показалось бесполезным, пока я не нашел его, в конце есть отсортированный список).Я нашел другой очень полезный метод vim buildin, чтобы показать точное время сообщения при загрузке вашего .vimrc.
Пожалуйста, запустите:
в VIM, чтобы получить больше информации.
источник
IM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
-V
показало , что он был нелокальной$HOME
причиной проблемы:e
чтобы обновить файл. Сортируйте файл на месте в соответствии с общим временем, затраченным на каждую операцию, примерно так:%! sort -k2 -nr
Это может быть плагин или подсветка синтаксиса; Попробуйте,
:syntax off
когда это произойдет, и посмотрите, станет ли Vim быстрее.В случае с плагинами «общая медлительность» обычно происходит от автокоманд; а
:autocmd
списки всех. Расследуйте, убивая некоторых из них с помощью:autocmd! [group] {event}
. Переходите от более частых событий (напримерCursorMoved[I]
) к менее частым (напримерBufWinEnter
).Если вы можете достаточно надежно воспроизвести медлительность, может помочь бинарный поиск: уберите половину файлов
~/.vim/plugin/
, затем другую, повторите в наборе, который был медленным.Если вам действительно нужно заглянуть под капот, найдите версию Vim с
:profile
включенной командой. (Не в стандартной версии BIG для Windows, а в той, что поставляется с Cygwin; она также легко компилируется в большинстве дистрибутивов.)источник
Я нашел полезным распечатать все действия Vim в файл, запустив Vim с
-V
опцией:Это обеспечивает максимальную детализацию (уровень 12) и выводит ее в файл
log
. Затем вы можете выполнить некоторые действия Vim, которые, как вы знаете, являются медленными, а затем посмотреть, какие функции / отображения вызываются изнутри.источник
Если у вас проблемы с
^L
медленным обновлением экрана ( прокруткой и т. Д.), Возможно, проблема в неэффективном файле подсветки синтаксиса. Вы можете проверить это, временно отключив подсветку синтаксиса (:syn off
) и посмотрев, исчезла ли проблема; если вы хотите углубиться в детали, вы можете профилировать текущий файл синтаксиса, используя:syntime
::syntime on
чтобы начать профилирование.:syntime report
для создания отчета. Шаблоны, перечисленные первыми в отчете, - это те, которые заняли больше всего времени для обработки.источник