Czy istnieje sposób na profilowanie wtyczek Vima?
Mój MacVim staje się wolniejszy, gdy otwieram duży .py
. Wiem, że mogłem odznaczyć wszystkie wtyczki i ponownie wybrać 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
debugging
optimization
vim
macvim
charlax
źródło
źródło
.py
plików.autocmd
brzmi dla mnie najbardziej prawdopodobne.autocmd
Wygląda fajnie. Po prostu spróbowałem, ale Vim nie jest teraz wolny.folding=syntax
może zwolnić. Próbowałemfolding=manual
i teraz wszystko działa dobrzeOdpowiedzi:
Możesz użyć wbudowanej obsługi profilowania: po uruchomieniu vima do
(w przeciwieństwie do rzucenia,
noautocmd
nie jest tak naprawdę wymagane, po prostu przyspiesza zamknięcie vima).Uwaga: nie otrzymasz informacji o funkcjach, które zostały usunięte przed zamknięciem vima.
źródło
:set more | verbose function {function_name}
pokaże ci zawartość funkcji i jej lokalizację.profile.log
plik w bieżącym katalogu sesji Vima.profile.log
aby zobaczyć listę funkcji posortowanych według całkowitego czasu (profile.log
wydawało mi się bezużyteczne, zanim znalazłem, że na końcu jest posortowana lista).Znalazłem inną bardzo przydatną metodę kompilacji vima, która wyświetla dokładnie komunikaty czasowe podczas ładowania .vimrc.
Uruchom:
w VIM, aby uzyskać więcej informacji.
źródło
IM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
-V
pokazały, że$HOME
przyczyną problemu był problem:e
aby odświeżyć plik. Posortuj plik zgodnie z łącznym czasem wymaganym dla każdej operacji tak:%! sort -k2 -nr
Może to być wtyczka lub wyróżnianie składni; spróbuj,
:syntax off
kiedy to się stanie, i sprawdź, czy Vim natychmiast staje się szybszy.W przypadku wtyczek „ogólna powolność” zwykle pochodzi z poleceń automatycznych; A
:autocmd
ich wszystkich listach. Zbadaj, zabijając niektóre z nich za pośrednictwem:autocmd! [group] {event}
. Przejdź od częstszych zdarzeń (tj.CursorMoved[I]
) Do rzadszych (npBufWinEnter
.).Jeśli możesz w nieco niezawodny sposób odtworzyć powolność, wyszukiwanie binarne może pomóc: Przenieś połowę plików do
~/.vim/plugin/
, a następnie powtórz w powolnym zestawie.Jeśli naprawdę potrzebujesz zajrzeć pod maską, uzyskaj wersję Vima z
:profile
włączonym poleceniem. (Nie jest to waniliowa DUŻA wersja Windows, ale ma ją ta, która jest dostarczana z Cygwinem; także samodzielna kompilacja jest dość łatwa w większości dystrybucji).źródło
Pomocne jest wydrukowanie całej aktywności Vima do pliku, uruchamiając Vima z
-V
opcją:Zapewnia to maksymalną gadatliwość (poziom 12) i wysyła ją do pliku
log
. Następnie możesz wykonać pewne działania Vima, o których wiesz, że są powolne, a następnie zobaczyć, które funkcje / mapowania są wywoływane wewnętrznie.źródło
Jeśli masz problemy z
^L
powolnymi operacjami aktualizacji ekranu ( przewijaniem itp.), Przyczyną może 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 za pomocą:syntime
::syntime on
aby rozpocząć profilowanie.:syntime report
aby wygenerować raport. Wzory wymienione na początku w raporcie zajęły najwięcej czasu.źródło