कैसे देखें कि कौन सा प्लग-इन विम को धीमा कर रहा है?


318

क्या विम प्लग को प्रोफाइल करने का कोई तरीका है?

जब मैं एक बड़ा खोलता हूं तो मेरा मैकवीम धीमा और धीमा हो जाता है .py। मुझे पता है कि मैं सभी प्लगइन्स को रद्द कर सकता हूं और एक-एक करके जांच कर सकता हूं कि कौन सा प्लगइन अपराधी है, लेकिन क्या कोई तेज़ तरीका है?

मेरा डॉटविम यहाँ है: https://github.com/charlax/dotvim



1
दरअसल, स्टार्टअप ठीक है। कुछ मिनट के उपयोग के बाद विम धीमा हो जाता है। यह विशेष रूप से .pyफाइलों की चिंता करता है।
charlax

द्विआधारी खोज जाने का रास्ता है। आपने 2 घंटे पहले अपना प्रश्न पूछा है, आपकी समस्या का कारण उस समय में पाया गया होगा। इंगो कर्कट का autocmdकूबड़ मेरे लिए बहुत सुखद लगता है।
रोमेनिल

यह सच है - लेकिन क्या आपको नहीं लगता कि अगर एक घंटे में भी एक ही परिणाम प्राप्त करने का कोई तरीका है, तो बेहतर है? क्या अधिक है, स्टार्टअप ठीक है, यह कुछ मिनटों के उपयोग के बाद है, इसलिए इसे बहुत लंबा समय लगेगा। autocmdसुंदर दिखाई देता है। बस कोशिश की लेकिन विम अभी धीमा नहीं है।
charlax

1
बस एक ही मुद्दे का सामना करना पड़ा, लेकिन बड़ी रूबी फाइलों पर। पाया कि folding=syntaxधीमा हो सकता है। के साथ कोशिश की folding=manualऔर अब सब कुछ ठीक काम करता है
Aleksandr K.

जवाबों:


496

आप अंतर्निहित रूपरेखा समर्थन का उपयोग कर सकते हैं: विम लॉन्च करने के बाद

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

(छोड़ने के विपरीत noautocmdवास्तव में आवश्यक नहीं है, यह सिर्फ वीम को तेजी से छोड़ देता है)।

ध्यान दें: आपको उन कार्यों के बारे में जानकारी नहीं मिलेगी जिन्हें विम छोड़ने से पहले हटा दिया गया था।


13
ये अद्भुत है। मैं देख पा रहा था कि ईज़ीटैग्स अपराधी है। आपका बहुत बहुत धन्यवाद!
charlax

5
इससे मुझे "विम-गिटगटर" का पता लगाने में मदद मिली।
सेबेस्टियन ग्रिग्नोली

6
@subjectego :set more | verbose function {function_name}आपको फ़ंक्शन सामग्री दिखाएगा और यह कहाँ स्थित है।
ZyX

26
यदि यह स्पष्ट नहीं है, तो परिणाम profile.logआपके विम सत्र की वर्तमान निर्देशिका में एक फ़ाइल है।
मीका स्मिथ

7
profile.logकुल समय के आधार पर छांटे गए कार्यों की सूची देखने के लिए अंत में कूदें ( profile.logमुझे लगता है कि इससे पहले कि यह अंत में एक छँटाई सूची है मुझे मिला)।
एंड्री पोर्टनॉय

78

मुझे आपके .vimrc को लोड करने के दौरान बिल्कुल समय संदेश दिखाने के लिए एक और बहुत उपयोगी विम बिल्डिन विधि मिली।

vim --startuptime timeCost.txt timeCost.txt

कृपया चलाएं:

:help --startuptime

अधिक जानकारी प्राप्त करने के लिए VIM में।


3
यदि कोई और सोच रहा है, तो यह सभी vim / gvim डिस्ट्रोस में मौजूद नहीं है। एक शेयर विन Gvim 7.4 में यहाँ पर नहीं है (हालांकि यह viminfo में प्रलेखित है)
thynctank

1
@thynctank मैंने अपने gvim 7.4 पर कोशिश की और यह काम कर गया। यहाँ मेरा संस्करण हैIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
feihu

सबसे बढ़िया उत्तर! मुझे सबसे धीमे प्लगइन की पहचान करने में मदद की जिसने मुझे हर शुरुआत में गुस्सा दिलाया।
थैंक्स

इस और मूल से -Vपता चला कि यह एक गैर-स्थानीय $HOMEमुद्दा था
bsb

:eफ़ाइल को ताज़ा करने के लिए आपको निष्पादित करने की आवश्यकता है । प्रत्येक ऑप के लिए लिए गए कुल समय के अनुसार फाइल को क्रमबद्ध करें जैसे:%! sort -k2 -nr
आशुतोष जिंदल

31

यह एक प्लगइन या सिंटैक्स हाइलाइटिंग हो सकता है; :syntax offऐसा होने पर प्रयास करें और देखें कि क्या विम तुरंत तेज हो जाता है।

प्लगइन्स के साथ, एक "सामान्य सुस्ती" आमतौर पर ऑटोकॉमैंड्स से आता है; एक :autocmdसूचियों उन सब को। के माध्यम से उनमें से कुछ को मारकर जांच करें :autocmd! [group] {event}। अधिक लगातार घटनाओं (यानी CursorMoved[I]) से कम लगातार लोगों (जैसे BufWinEnter) के लिए आगे बढ़ें ।

यदि आप कुछ हद तक धीमेपन को पुन: उत्पन्न कर सकते हैं, तो एक द्विआधारी खोज मदद कर सकती है: आधी फाइलों को अंदर ले जाएं ~/.vim/plugin/, फिर दूसरा, उस सेट में दोहराएं जो धीमा था।

यदि आपको वास्तव में हुड के नीचे देखने की आवश्यकता है, तो एक विम संस्करण प्राप्त करें जिसमें :profileकमांड सक्षम है। (वेनिला बिग विंडोज संस्करण नहीं है, लेकिन सिग्विन के साथ जो जहाज है, वह भी; अधिकांश डिस्ट्रो के तहत स्व-संकलन काफी आसान है।)


17

मैंने -Vविकल्प के साथ विम शुरू करके किसी फ़ाइल में सभी Vim गतिविधि को प्रिंट करने में मददगार पाया है :

vim -V12log

यह अधिकतम वर्बोसिटी (स्तर 12) प्रदान करता है और इसे फ़ाइल में आउटपुट करता है log। फिर आप कुछ विम क्रिया कर सकते हैं जिन्हें आप धीमा होना जानते हैं, और फिर देखें कि कौन से कार्य / मैपिंग आंतरिक रूप से कहे जा रहे हैं।


10
लेकिन लॉग पर कोई समय नहीं हैं
कोकिज़ु

7

यदि आपको स्क्रीन अपडेट ऑपरेशन ( ^L, स्क्रॉलिंग, आदि) के साथ समस्याएँ धीमी हो रही हैं, तो आपकी समस्या एक अक्षम सिंटैक्स हाइलाइटिंग फ़ाइल हो सकती है। आप अस्थायी रूप से सिंटैक्स हाइलाइटिंग ( :syn off) को अक्षम करके यह देख सकते हैं कि क्या समस्या दूर हो गई है; यदि आप विवरण में खुदाई करना चाहते हैं, तो आप वर्तमान सिंटैक्स फ़ाइल का उपयोग करके प्रोफ़ाइल कर सकते हैं :syntime:

  1. एक फ़ाइल खोलें जो सिंटैक्स हाइलाइटिंग प्रदर्शन समस्याओं का कारण बनता है।
  2. भागो :syntime onकी रूपरेखा शुरू करने के लिए।
  3. फ़ाइल के माध्यम से स्क्रॉल करें।
  4. :syntime reportएक रिपोर्ट उत्पन्न करने के लिए चलाएँ । रिपोर्ट में पहले सूचीबद्ध पैटर्न वे हैं जिन्हें संसाधित होने में सबसे अधिक समय लगा।

2
यदि ऐसा लगता है कि वाक्य रचना हाइलाइट फ़ाइल अपराधी है, तो कार्रवाई का अगला कोर्स क्या है?
स्पेक्टेटर 6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.