Hangi eklentilerin Vim'i yavaşlattığını nasıl görebilirim?


318

Vim eklentilerini profillemenin bir yolu var mı?

Geniş açtığımda MacVim cihazım yavaşlar ve yavaşlar .py. Tüm eklentilerin seçimini kaldırabileceğimi ve hangi eklentinin suçlu olduğunu kontrol etmek için tek tek seçebileceğimi biliyorum, ancak daha hızlı bir yol var mı?

Dotvim'im burada: https://github.com/charlax/dotvim



1
Aslında başlangıç ​​iyi. Vim birkaç dakikalık kullanımdan sonra yavaşlar. Özellikle .pydosyalarla ilgilidir .
charlax

İkili arama olduğunu gitmek için yol. Sorunuzu 2 saat önce sormuştunuz, probleminizin nedeni o zaman bulunmuş olurdu. Ingo Karkat'ın autocmdönsezi bana en akla yatkın geliyor.
romainl

Bu doğru - ama aynı sonucu bir saat içinde almanın bir yolu varsa, bunun daha iyi olduğunu düşünmüyor musunuz? Dahası, başlangıç ​​iyi, birkaç dakika kullanımdan sonra, bu yüzden çok uzun zaman alacaktı. autocmdhavalı görünüyor. Sadece denedim ama Vim şu anda yavaş değil.
charlax

1
Sadece aynı sorunla karşılaştı, ancak büyük yakut dosyalarında. folding=syntaxYavaşlayabileceği bulundu . Denendi folding=manualve şimdi her şey iyi çalışıyor
Aleksandr K.

Yanıtlar:


496

Yerleşik profil oluşturma desteğini kullanabilirsiniz: vim do'yu başlattıktan sonra

:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!

(bırakmanın aksine noautocmdgerekli değildir, sadece vimden daha hızlı çıkılmasını sağlar).

Not: vim çıkmadan önce silinen işlevler hakkında bilgi alamazsınız.


13
Bu harika. EasyTags'in suçlu olduğunu görebildim. Çok teşekkürler!
charlax

5
bu "vim-gitgutter" ı tıkanıklık olarak tespit etmeme yardımcı oldu.
Sebastián Grignoli

6
@subjectego :set more | verbose function {function_name}size fonksiyon içeriğini ve bulunduğu yeri gösterecektir.
ZyX

26
Net değilse, sonuç profile.logVim oturumunuzun geçerli dizinindeki bir dosyadır.
Micah Smith

7
profile.logToplam süreye göre sıralanmış işlevlerin listesini görmek için sonuna kadar atlayın (sonunda profile.logsıralanmış bir liste olduğunu bulmadan önce bana yararsız görünüyordu).
Andrey Portnoy

78

.Vimrc'nizi yüklerken tam zamanlama mesajlarını göstermek için çok yararlı bir vim buildin yöntemi buldum.

vim --startuptime timeCost.txt timeCost.txt

Lütfen koş:

:help --startuptime

Daha fazla bilgi almak için VIM'de.


3
Başka birinin merak etmesi durumunda, bu tüm vim / gvim dağıtımlarında mevcut değildir. Stokta yok Win Gvim 7.4 burada (viminfo'da belgelenmesine rağmen)
thynctank

1
@thynctank gvim 7.4 üzerinde denedim ve işe yaradı. İşte benim sürümIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
feihu

En iyi cevap! Her vim başlangıcında beni sinirlendiren en yavaş eklentiyi belirlememe yardımcı oldu. Thanx :)
kovpack

Bu ve temel , soruna neden olan -Vyerel olmayan bir şey olduğunu gösterdi$HOME
BSB

:eDosyayı yenilemek için yürütmeniz gerekir . Dosyayı her bir op için alınan toplam süreye göre sıralayın:%! sort -k2 -nr
Ashutosh Jindal

31

Bir eklenti veya sözdizimi vurgulama olabilir; :syntax offbu olduğunda bir deneyin ve Vim'in hızlı bir şekilde hızlanıp hızlanmadığını görün.

Eklentilerde, "genel yavaşlık" genellikle otokomutlardan gelir; a :autocmdhepsini listeler. Bazılarını öldürerek araştırın :autocmd! [group] {event}. Daha sık görülen olaylardan (örn. CursorMoved[I]) Daha az sık olan olaylara (örn. ) Geçin BufWinEnter.

Yavaşlığı biraz güvenilir bir şekilde yeniden oluşturabiliyorsanız, bir ikili arama yardımcı olabilir: Dosyaların yarısını ~/.vim/plugin/, sonra diğerini, yavaş olan kümede tekrarlayın.

Gerçekten kaputun altına bakmanız gerekiyorsa, :profilekomutun etkinleştirildiği bir Vim sürümü edinin . (Vanilya BÜYÜK Windows sürümü değil, Cygwin ile birlikte gelen sürümde de var; ayrıca, çoğu dağıtım altında kendi kendine derleme oldukça kolaydır.)


17

Vim -Vseçeneğini seçerek tüm Vim etkinliklerini bir dosyaya yazdırmayı yararlı buldum :

vim -V12log

Bu, maksimum ayrıntı düzeyini (düzey 12) sağlar ve dosyaya verir log. Daha sonra yavaş olduğunu bildiğiniz bazı Vim eylemlerini gerçekleştirebilir ve ardından hangi işlevlerin / eşlemelerin dahili olarak çağrıldığını görebilirsiniz.


10
ancak günlükte zamanlama yok
Kokizzu

7

Ekran güncelleme işlemlerinde ( ^L, kaydırma vb.) Yavaş olma konusunda sorun yaşıyorsanız , sorununuz verimsiz bir sözdizimi vurgulama dosyası olabilir. Sözdizimi vurgulamayı ( :syn off) geçici olarak devre dışı bırakarak ve sorunun giderilip giderilmediğini kontrol ederek bunu test edebilirsiniz ; ayrıntıları incelemek istiyorsanız, geçerli sözdizimi dosyasını aşağıdakileri kullanarak profil oluşturabilirsiniz :syntime:

  1. Performans sorunlarını vurgulayan sözdizimine neden olan bir dosya açın.
  2. Run :syntime onprofilleme başlatın.
  3. Dosyada biraz ilerleyin.
  4. :syntime reportRapor oluşturmak için çalıştırın . Raporda ilk sırada yer alan kalıplar, işlenmesi en fazla zaman alan kalıplardır.

2
Sözdizimi vurgu dosyası suçlu gibi görünüyorsa, bir sonraki eylem nedir?
Spectator6
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.