Jak sprawdzić, które wtyczki zwalniają Vima?
Czy istnieje sposób na profilowanie wtyczek Vima?
Mój MacVim staje się wolniejszy i wolniejszy, gdy otwieram duży .py
. Wiem, że mogę odznaczyć wszystkie wtyczki i ponownie zaznaczyć jeden po drugim, aby sprawdzić, która wtyczka jest winowajcą, ale czy istnieje szybszy sposób?
Mój dotvim jest tutaj: https://github.com/charlax/dotvim
5 answers
Możesz użyć wbudowanej obsługi profilowania: po uruchomieniu vim do
:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!
(w przeciwieństwie do zamykania {[1] } nie jest tak naprawdę wymagane, po prostu sprawia, że vim kończy pracę szybciej).
Uwaga: nie otrzymasz informacji o funkcjach, które zostały usunięte przed zamknięciem Vima.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 13:41:27
Znalazłem inną bardzo pomocną metodę budowania vim, aby pokazać dokładnie wiadomości czasowe podczas ładowania .vimrc.
vim --startuptime timeCost.txt timeCost.txt
Proszę uruchomić:
:help --startuptime
W Vimie, aby uzyskać więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 08:37:31
Może to być wtyczka lub podświetlenie składni; spróbuj :syntax off
kiedy to się stanie i sprawdź, czy Vim od razu staje się szybszy.
W przypadku wtyczek, "ogólna powolność" zwykle pochodzi z poleceń automatycznych; a :autocmd
wymienia je wszystkie. Zbadaj, zabijając niektórych z nich za pomocą :autocmd! [group] {event}
. Należy przejść od częstszych zdarzeń (np. CursorMoved[I]
) do mniej częstych (np. BufWinEnter
).
Jeśli możesz w pewien sposób wiarygodnie odtworzyć spowolnienie, wyszukiwanie binarne może pomóc: usunąć połowę plików w ~/.vim/plugin/
, a następnie drugi, powtórz w zestawie, który był powolny.
Jeśli naprawdę chcesz zajrzeć pod maskę, Pobierz wersję Vima z włączonym poleceniem :profile
. (Nie wersja vanilla BIG Windows, ale ta, która jest dostarczana z Cygwinem, ma ją; ponadto, samodzielna kompilacja jest dość łatwa pod większością dystrybucji.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 12:04:09
Uważam, że pomocne jest wydrukowanie całej aktywności Vima do pliku, uruchamiając Vima opcją -V
:
vim -V12log
Zapewnia maksymalną szczegółowość (poziom 12) i wysyła ją do pliku log
. Następnie możesz wykonać pewne działania Vima, które są powolne, a następnie sprawdzić, które funkcje / mapowania są wywoływane wewnętrznie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 11:00:58
Jeśli masz problemy z operacjami aktualizacji ekranu (^L
, przewijaniem itp.), może to być nieefektywny plik podświetlania składni. Możesz to przetestować, tymczasowo wyłączając podświetlanie składni (:syn off
) i sprawdzając, czy problem zniknie; jeśli chcesz zagłębić się w szczegóły, możesz profilować bieżący plik składni używając :syntime
:
- otwórz plik, który powoduje problemy z podświetleniem składni.
- Uruchom
:syntime on
, aby rozpocząć profilowanie. - Scroll przez plik trochę.
- Uruchom
:syntime report
, Aby wygenerować raport. Wzory wymienione jako pierwsze w raporcie to te, które zajmowały najwięcej czasu na przetworzenie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 19:30:01