Vim ทำงานช้าลงเมื่อเวลาผ่านไปโดยมีการเปิดไวยากรณ์


11

มีสิ่งใดบ้างที่ฉันสามารถทำได้syntax onเมื่อใช้ Vim

ทันทีที่ฉันเปิดสิ่งที่เป็นกอบเป็นกำก็แทบจะเป็นไปไม่ได้ที่จะแก้ไขหลังจากผ่านไประยะหนึ่ง การกดคีย์ทุกครั้งทำให้เกิดความล่าช้า ถ้าฉันปิดการเน้นไวยากรณ์หรือเรียกใช้เป็นกลุ่ม - มันใช้ได้อีกครั้ง

ฉันได้synmaxcolตั้งไว้ที่ 120 ไฟล์ตัวอย่างทับทิมมีความยาวเพียง 59 บรรทัดและไม่เกิน 80 อักขระ

ฉันใช้และvim-rubyvim-rails

ปัญหาคือความล่าช้าดูเหมือนจะสะสมตลอดเวลา เมื่อฉันเปิดไฟล์ตั้งแต่เริ่มต้นก็ถือว่าใช้ได้ หลังจากนั้นไม่นานมันก็ช้าลงเรื่อย ๆ


1
คุณลองทำซ้ำสิ่งนี้ด้วยvim -Nu NONE -c 'syntax on'หรือไม่ คุณได้ปฏิบัติตามเคล็ดลับการแก้จุดบกพร่องในโพสต์
akshay

ประเภทไฟล์อะไร ใด?
romainl

1
ทับทิม. แน่นอนมันสามารถแก้ไขได้ด้วย-u NONEดังนั้นจะต้องมีปลั๊กอินบางอย่างแล้ว เดาคำตอบสำหรับคำถามส่วนใหญ่คือ 'ปิดการใช้งานปลั๊กอินจนกว่าคุณจะพบผู้ร้าย' :(
firedev

แต่ปัญหาคือ - ความล่าช้าดูเหมือนจะสะสมอยู่ตลอดเวลา เมื่อฉันเปิดไฟล์ตั้งแต่เริ่มต้นก็ถือว่าใช้ได้ หลังจากนั้นไม่นานมันก็ช้าลงเรื่อย ๆ
firedev

คำตอบ:


13

Vim เวอร์ชันล่าสุดมี:syntimeคำสั่งเพื่อแก้ไขปัญหาความช้าของการเน้นไวยากรณ์โดยการสร้างรายงานว่ากลุ่มไวยากรณ์แต่ละกลุ่มใช้เวลาในการจับคู่นานเท่าไหร่ สิ่งนี้มีประโยชน์มากและช่วยให้คุณค้นหาผู้กระทำผิดได้อย่างรวดเร็ว ข้อเสียเพียงอย่างเดียวคือคุณต้องสร้าง Vim (โดยปกติ "ขนาดใหญ่") ด้วยการเปิดใช้งานการทำโปรไฟล์ :help :syntimeให้คำแนะนำที่ดีเกี่ยวกับวิธีการใช้งาน

อีกวิธีหนึ่งคุณสามารถลองลบสคริปต์ไวยากรณ์แต่ละรายการออกจาก~/.vim/syntax/และ$VIMRUNTIME/syntax/(อ้างอิงตามปัจจุบัน'filetype') จากนั้นเจาะลึกลงไปโดยการลบบางส่วนของคำจำกัดความไวยากรณ์ภายในสคริปต์


น่าสนใจอืมดูเหมือนว่านี่คือแท็กที่เกี่ยวข้อง บรรทัดสูงสุดที่ใช้เวลาส่วนใหญ่มีวิธีการจากโครงการอื่น ๆ ของฉัน TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 0.129674 247 182 0.002365 0.000525 rubyMethodNameTag \C\<\%(roi\|paginate\|admin_index_attributes\|facilities\|manager\|net_price?\ ....- สิ่งนี้ชัดเจนจากโฟลเดอร์อื่น ปิดการใช้งานแท็ก
firedev

คุณใช้ปลั๊กอินที่เน้นแท็กเช่นvim-easytagsหรือไม่? นั่นอาจทำให้เกิดการชะลอตัว
Ingo Karkat

ใช่ปิดการใช้งานไม่ใช่ตัวเลขที่มีสติอีกครั้ง ขอบคุณ
firedev

อืมตอนนี้มันกลับมาทำงานอีกครั้งคราวนี้: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - อะไรที่ฉันสามารถทำได้เกี่ยวกับมัน?
firedev

2
มันอาจเป็นเครื่องมือ regexp ใหม่ ลอง:set regexpengine=1(ดีที่สุดในอินสแตนซ์ Vim ใหม่ก่อนเปิดไฟล์ Ruby)
Ingo Karkat

5

คอขวดทั่วไปอื่นในการเน้นไวยากรณ์ของกลุ่มคือการพับ การแก้ไขอาจช้ามากหากการพับมีหลายไอเท็มไวยากรณ์ (ซึ่งโดยทั่วไปหมายถึงมันผ่านหลายบรรทัด) เนื่องจาก vim จะรีเฟรชไวยากรณ์ทั้งหมดสำหรับทุกอักขระที่แทรก

หากนี่คือสิ่งที่คุณกำลังประสบอยู่ฉันขอแนะนำให้ใช้ปลั๊กอินFastFold ปลั๊กอินนี้จะระบุการซิงก์ของรอยพับและแทนที่ด้วยการพับด้วยตนเองทำให้การเน้นของไวยากรณ์นั้นเร็วขึ้นมาก


1

นี่คือสิ่งที่ฉันทำในท้ายที่สุด:

  • ลบออก xolox/vim-easytags
  • ลบออก xolox/vim-misc
  • แทนที่ kien/ctrlp d11wtq/ctrlp_bdeleteและtacahiroy/ctrlp-funkyมี junegunn/fzf
  • ชุด regexpengine=1

ตอนนี้ Vim เรียบเนียนเหมือนเนย แต่ฉันไม่มีแท็กอีกต่อไป เฮ้อ ...


1
Vim มีการรองรับแท็กในตัว คุณไม่จำเป็นต้องมีปลั๊กอินบุคคลที่สาม (นอกเหนือจาก ctags เพื่อสร้างไฟล์แท็กแน่นอน) ดู Ctags ง่ายดายด้วยบทความGitโดย Tim Pope ฉันใช้สิ่งนี้และทำงานได้อย่างมหัศจรรย์ ดูที่:help tag-commandsการข้ามไปยังแท็กด้วย ฉันคิดว่า ctags ค่อนข้างสำคัญเมื่อทำงานกับ Vim มันทำให้การนำทางง่ายสุด ๆ และคุณยังสามารถเติมข้อความอัตโนมัติด้วย:help i_Ctrl-x_Ctrl-]!
akshay

สนใจที่จะเพิ่มอะไรที่นี่vi.stackexchange.com/questions/2630/how-to-set-up-tags-properly ?
firedev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.