วิธีดูปลั๊กอินที่ทำให้ Vim ทำงานช้า?


318

มีวิธีในการโพรไฟล์ปลั๊กอินเป็นกลุ่มหรือไม่?

MacVim .pyของฉันจะช้าลงและช้าลงเมื่อเปิดขนาดใหญ่ ฉันรู้ว่าฉันสามารถยกเลิกการเลือกปลั๊กอินทั้งหมดและเลือกทีละตัวอีกครั้งเพื่อตรวจสอบปลั๊กอินที่เป็นผู้ร้าย แต่มีวิธีที่เร็วกว่า?

dotvim ของฉันอยู่ที่นี่: https://github.com/charlax/dotvim



1
ที่จริงแล้วการเริ่มต้นนั้นใช้ได้ Vim จะช้าลงหลังจากใช้งานไปสองสามนาที มันเกี่ยวข้องกับ.pyไฟล์โดยเฉพาะอย่างยิ่ง
charlax

การค้นหาแบบไบนารีเป็นวิธีที่จะไป คุณได้ถามคำถามของคุณเมื่อ 2 ชั่วโมงก่อนสาเหตุของปัญหาของคุณจะได้รับการค้นพบในเวลานั้น autocmdลางสังหรณ์ของ Ingo Karkat ฟังดูน่าเชื่อถือสำหรับฉัน
romainl

นั่นเป็นความจริง - แต่คุณไม่คิดว่าถ้ามีวิธีที่จะได้ผลลัพธ์แบบเดียวกันภายในหนึ่งชั่วโมง ยิ่งไปกว่านั้นการเริ่มต้นนั้นใช้ได้หลังจากใช้งานไปไม่กี่นาทีดังนั้นมันจึงใช้เวลานานมาก autocmdดูเท่ เพิ่งลองไปแล้วแต่ Vim จะไม่ช้าในขณะนี้
charlax

1
เพิ่งประสบปัญหาเดียวกัน แต่ในไฟล์ทับทิมขนาดใหญ่ พบว่าfolding=syntaxสามารถชะลอตัวลง พยายามด้วยfolding=manualและตอนนี้ทุกอย่างทำงานได้ดี
อเล็กซานเดอร์เค

คำตอบ:


496

คุณสามารถใช้การสนับสนุนการทำโปรไฟล์แบบบิวด์อิน: หลังจากเรียกใช้ vim do

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

(ซึ่งแตกต่างจากการเลิกnoautocmdไม่จำเป็นจริงๆมันเพียงทำให้เป็นกลุ่มออกเร็วขึ้น)

หมายเหตุ: คุณจะไม่ได้รับข้อมูลเกี่ยวกับฟังก์ชั่นที่ถูกลบก่อนที่จะเรียกใช้ออกจากระบบ


13
สิ่งนี้ช่างมหัศจรรย์. ฉันเห็นว่า EasyTags เป็นตัวการ ขอบคุณมาก!
charlax

5
สิ่งนี้ช่วยให้ฉันตรวจจับ "vim-gitgutter" เป็นสิ่งอุดตัน
Sebastián Grignoli

6
@subjectego :set more | verbose function {function_name}จะแสดงเนื้อหาของฟังก์ชั่นและสถานที่ที่คุณอยู่
ZyX

26
หากยังไม่ชัดเจนผลลัพธ์profile.logจะเป็นไฟล์ในไดเรกทอรีปัจจุบันของเซสชัน Vim ของคุณ
คาห์สมิ ธ

7
ข้ามไปยังจุดสิ้นสุดprofile.logเพื่อดูรายการฟังก์ชั่นที่เรียงลำดับตามเวลาทั้งหมด ( profile.logดูไร้ประโยชน์สำหรับฉันก่อนที่ฉันจะพบว่ามีรายการเรียงลำดับที่ท้าย)
Andrey Portnoy

78

ฉันพบวิธี vim buildin ที่เป็นประโยชน์อีกวิธีหนึ่งในการแสดงข้อความกำหนดเวลาที่แน่นอนขณะที่โหลด. vimrc ของคุณ

vim --startuptime timeCost.txt timeCost.txt

กรุณาเรียกใช้:

:help --startuptime

ใน VIM เพื่อรับข้อมูลเพิ่มเติม


3
ในกรณีที่คนอื่นกำลังสงสัยสิ่งนี้ไม่มีอยู่ใน distros 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

คำตอบที่ดีที่สุด! ช่วยฉันระบุปลั๊กอินที่ช้าที่สุดที่ทำให้ฉันโกรธทุกครั้งที่เริ่มต้น Thanx :)
kovpack

สิ่งนี้และพื้นฐาน-Vแสดงให้เห็นว่ามันไม่ใช่ในท้องถิ่นที่$HOMEก่อให้เกิดปัญหา
bsb

คุณต้องดำเนินการ:eเพื่อรีเฟรชไฟล์ จัดเรียงไฟล์ตามสถานที่ตามเวลาทั้งหมดที่ใช้สำหรับแต่ละ op เช่น:%! sort -k2 -nr
Ashutosh Jindal

31

อาจเป็นปลั๊กอินหรือการเน้นไวยากรณ์ ลอง:syntax offเมื่อสิ่งนี้เกิดขึ้นและดูว่า Vim จะเร็วขึ้นหรือไม่

ด้วยปลั๊กอิน, "ความช้าทั่วไป" มักมาจากการเติมข้อความอัตโนมัติ; :autocmdรายการพวกเขาทั้งหมด :autocmd! [group] {event}ตรวจสอบโดยการฆ่าบางส่วนของพวกเขาผ่านทาง ดำเนินการต่อจากเหตุการณ์ที่เกิดขึ้นบ่อยครั้ง (เช่นCursorMoved[I]) ไปยังเหตุการณ์ที่น้อยกว่า (เช่นBufWinEnter)

หากคุณสามารถสร้างความช้าได้อย่างน่าเชื่อถือการค้นหาแบบไบนารี่อาจช่วยได้: ย้ายไฟล์ครึ่งหนึ่งออกไปจากนั้นอีกไฟล์หนึ่ง~/.vim/plugin/ทำซ้ำในเซ็ตที่ช้า

หากคุณต้องการดูภายใต้ประทุนจริง ๆ รับรุ่น Vim ที่:profileเปิดใช้งานคำสั่ง (ไม่ใช่รุ่น Windows BIG Vanilla แต่รุ่นที่มาพร้อมกับ Cygwin มีอยู่ด้วยเช่นกันการคอมไพล์เองนั้นค่อนข้างง่ายภายใต้ความผิดเพี้ยนส่วนใหญ่)


17

ฉันพบว่ามีประโยชน์ในการพิมพ์กิจกรรม Vim ทั้งหมดไปยังไฟล์โดยเริ่ม Vim ด้วย-Vตัวเลือก:

vim -V12log

นี้จะให้ฟุ่มเฟื่อยสูงสุด (ระดับ 12) logและผลมันไปยังแฟ้ม จากนั้นคุณสามารถดำเนินการเป็นกลุ่มบางอย่างที่คุณรู้ว่าช้าแล้วดูว่าการเรียกฟังก์ชัน / การแมปใดที่ภายใน


10
แต่ไม่มีกำหนดเวลาในบันทึก
Kokizzu

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.