কোন প্লাগিনগুলি ভিমকে ধীর করে দিচ্ছে তা কীভাবে দেখবেন?


318

ভিম প্লাগইনগুলিকে প্রোফাইল দেওয়ার কোনও উপায় আছে?

আমার MacVim ধীর এবং ধীর যখন আমি একটি বৃহৎ খুলতে হয়ে .py। আমি জানি যে আমি সমস্ত প্লাগইনগুলি অনির্বাচিত করতে এবং একের পর এক পুনরায় নির্ধারণ করতে পারি কোন প্লাগইনটি অপরাধী কিনা তা খতিয়ে দেখতে, তবে এর থেকে আরও দ্রুত কোনও উপায় আছে?

আমার ডটভিমটি এখানে: https://github.com/charlax/dotvim



1
আসলে, স্টার্টআপ ঠিক আছে। কয়েক মিনিট ব্যবহারের পরে ভিম ধীর হয়ে যায়। এটি বিশেষত .pyফাইলগুলি নিয়ে উদ্বেগ প্রকাশ করে।
চার্ল্যাক্স

বাইনারি অনুসন্ধান হল উপায়। আপনি ২ ঘন্টা আগে আপনার প্রশ্ন জিজ্ঞাসা করেছেন, আপনার সমস্যার কারণটি সেই সময়ে খুঁজে পাওয়া যেত। ইঙ্গো Karkat এর autocmdদলা আমাকে MST বিশ্বাসযোগ্য শোনাচ্ছে।
রোমেনেল

এটি সত্য - তবে আপনি কি ভাবেন না যে যদি এক ঘন্টার মধ্যেও একই ফলাফল পাওয়ার কোনও উপায় থাকে, তবে এটি আরও ভাল? আরও কী, স্টার্টআপ ঠিক আছে, এটি কয়েক মিনিটের ব্যবহারের পরে, তাই এটি খুব দীর্ঘ সময় নিয়ে যেতে পারে। autocmdশান্ত দেখায়. কেবল এটি চেষ্টা করে দেখুন তবে এখনই ভিম ধীর নয়।
চার্লাক্স

1
কেবল একই সমস্যার মুখোমুখি হয়েছিল তবে বড় রুবি ফাইলগুলিতে। খুঁজে পাওয়া যায় যা folding=syntaxধীর হতে পারে। চেষ্টা করেছেন folding=manualএবং এখন সবকিছু ঠিকঠাক কাজ করে
আলেকসান্ডার কে।

উত্তর:


496

আপনি বিল্ট-ইন প্রোফাইলিং সমর্থন ব্যবহার করতে পারেন: ভিএম ডু চালু করার পরে

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

(প্রস্থান ছাড়াই noautocmdসত্যই প্রয়োজন হয় না, এটি কেবল ভিমকে দ্রুত তাত্পর্যপূর্ণ করে তোলে)।

দ্রষ্টব্য: আপনি ভিম ছাড়ার আগে মুছে ফেলা ফাংশন সম্পর্কিত তথ্য পাবেন না।


13
এটা চমৎকার. আমি দেখতে পেলাম যে ইজিট্যাগগুলি অপরাধী। অনেক ধন্যবাদ!
চার্লাক্স

5
এটি আমাকে ক্লাব হিসাবে "ভিআইএম-গিটগটার" সনাক্ত করতে সহায়তা করেছে।
সেবাস্তিয়ান গ্রিগনোলি

6
@ সুজবেস্টেগো :set more | verbose function {function_name}আপনাকে ফাংশন সামগ্রী এবং এটি কোথায় রয়েছে তা প্রদর্শন করবে show
জাইএক্স

26
যদি এটি পরিষ্কার না হয় তবে ফলাফলটি profile.logআপনার ভিম সেশনের বর্তমান ডিরেক্টরিতে থাকা একটি ফাইল।
মিকাহ স্মিথ

7
profile.logমোট সময় অনুসারে বাছাই করা ক্রিয়াকলাপগুলির তালিকা দেখতে শেষে গিয়ে দেখুন ( profile.logশেষের দিকে এখানে বাছাই করা তালিকা রয়েছে বলে মনে হওয়ার আগে আমার কাছে অকেজো মনে হয়েছিল)।
আন্দ্রে পোর্টনয়

78

আপনার .vimrc লোড করার সময় ঠিক সময় বার্তাগুলি দেখানোর জন্য আমি আরও একটি সহায়ক ভিম বিল্টিন পদ্ধতি পেয়েছি।

vim --startuptime timeCost.txt timeCost.txt

চালানোর জন্য অনুগ্রহ করে:

:help --startuptime

আরও তথ্য পেতে ভিআইএম এ।


3
অন্য কেউ যদি ভাবছেন, তবে সমস্ত ভিএম / জিভিম ডিস্ট্রোজে এটি উপস্থিত নেই। জিন জিভিম এখানে 7.4 ওভারে স্টক করে না (যদিও এটি উইমিনফোতে নথিভুক্ত করা হয়েছে)
থাইঙ্কট্যাঙ্ক

1
@thynctank আমি আমার gvim 7.4 এ চেষ্টা করেছি এবং এটি কার্যকর হয়েছে। এখানে আমার সংস্করণIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
ফিজু

সেরা উত্তর! আমাকে সর্বনিম্ন প্লাগিন শনাক্ত করতে সহায়তা করেছে যা প্রতিটা ভিএম শুরুর সময় আমাকে ক্রুদ্ধ করেছিল। থ্যাঙ্কস :)
কোভপ্যাক

এটি এবং বেসিক -Vদেখিয়েছিল যে এটি স্থানীয় হিসাবে $HOMEসমস্যা সৃষ্টি করেছে
বিএসবি

:eআপনার ফাইলটি রিফ্রেশ করতে এক্সিকিউট করতে হবে। প্রতিটি অপের জন্য মোট সময় গ্রহণের সময় অনুযায়ী ফাইলটি স্থানে সাজান:%! sort -k2 -nr
আশুতোষ জিন্দাল

31

এটি একটি প্লাগইন বা সিনট্যাক্স হাইলাইট হতে পারে; এটি :syntax offযখন ঘটে তখন চেষ্টা করুন এবং দেখুন ভিম তাত্ক্ষণিকভাবে দ্রুত হয় কিনা।

প্লাগইনগুলির সাথে, একটি "সাধারণ স্লোনেস" সাধারণত স্বতঃআরঙ্ক থেকে আসে; একটি :autocmdতাদের সমস্ত তালিকা। এর মাধ্যমে তাদের কাউকে হত্যা করে তদন্ত করুন :autocmd! [group] {event}। আরও ঘন ঘন ইভেন্টগুলি (যেমন CursorMoved[I]) থেকে কম ঘন ঘন ইভেন্টগুলিতে এগিয়ে যান (যেমন BufWinEnter)।

আপনি যদি কিছুটা নির্ভরযোগ্যভাবে মন্দতা পুনরুত্পাদন করতে পারেন তবে একটি বাইনারি অনুসন্ধানে সহায়তা করতে পারে: অর্ধেক ফাইল সরিয়ে ফেলুন, ~/.vim/plugin/অন্যটি, ধীরে ধীরে সেটটিতে পুনরাবৃত্তি করুন।

আপনার যদি সত্যই হুডের নীচে তাকাতে হয় তবে :profileকমান্ডটি সক্ষম হওয়া একটি ভিএম সংস্করণ পান । (ভ্যানিলা বিআইজি উইন্ডোজ সংস্করণ নয়, তবে সাইগউইনের সাথে যে জাহাজগুলি পাঠানো হয়েছে এটি রয়েছে; এছাড়াও, বেশিরভাগ ডিস্ট্রোসের অধীনে স্ব-সংকলন করা বেশ সহজ))


17

আমি -Vবিকল্পটি দিয়ে ভিম শুরু করে একটি ফাইলের সমস্ত ভিম ক্রিয়াকলাপ মুদ্রণ করতে সহায়ক বলে মনে করেছি :

vim -V12log

এটি সর্বাধিক ভার্বোসিটি (স্তর 12) সরবরাহ করে এবং এটি ফাইলে আউটপুট করে log। এরপরে আপনি কিছু ভিম ক্রিয়া সম্পাদন করতে পারেন যা আপনি ধীর হতে জানেন এবং তারপরে কোন ফাংশন / ম্যাপিংগুলি অভ্যন্তরীণভাবে ডাকা হচ্ছে তা দেখুন।


10
তবে লগের কোনও সময় নেই
কোকিজু

7

আপনার যদি স্ক্রিন আপডেট অপারেশনগুলি ( ^L, স্ক্রোলিং ইত্যাদি) ধীর হয়ে যাওয়ার সমস্যা হয় তবে আপনার সমস্যাটি একটি অকার্যকর সিনট্যাক্স হাইলাইটিং ফাইল হতে পারে। আপনি সাময়িকভাবে সিনট্যাক্স হাইলাইটিং অক্ষম করে এটি পরীক্ষা করতে পারেন ( :syn off) এবং সমস্যাটি চলে যায় কিনা তা দেখে; আপনি যদি বিশদটি খনন করতে চান তবে আপনি বর্তমান সিনট্যাক্স ফাইলটি ব্যবহার করে প্রোফাইল করতে পারেন :syntime:

  1. একটি ফাইল খুলুন যা সিনট্যাক্সের পারফরম্যান্স সমস্যার হাইলাইট করে।
  2. :syntime onপ্রোফাইলিং শুরু করতে রান করুন ।
  3. ফাইলটি কিছুটা স্ক্রোল করুন।
  4. :syntime reportএকটি প্রতিবেদন উত্পন্ন করতে চালান । প্রতিবেদনে প্রথমে তালিকাভুক্ত নিদর্শনগুলি প্রক্রিয়া করতে সবচেয়ে বেশি সময় নিয়েছে।

2
যদি মনে হয় সিনট্যাক্স হাইলাইট ফাইলটি অপরাধী, তবে পরবর্তী পদক্ষেপটি কী?
দর্শক 6
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.