Vim chậm dần theo thời gian với cú pháp trên


11

Tôi có thể làm gì để giữ syntax onkhi sử dụng Vim không?

Ngay sau khi tôi mở bất cứ thứ gì đáng kể, nó trở nên gần như không thể chỉnh sửa sau một thời gian. Mỗi lần nhấn phím gây ra sự chậm trễ. Nếu tôi tắt cú pháp tô sáng hoặc khởi chạy lại vim - nó sẽ ổn trở lại.

Tôi đã synmaxcolđặt thành 120. Tệp ruby ​​mẫu chỉ dài 59 dòng và không quá 80 ký tự.

Tôi đang sử dụng vim-rubyvim-rails.

Vấn đề là sự chậm trễ dường như tích lũy theo thời gian. Khi tôi mở tập tin từ đầu thì không sao. Sau một thời gian nó càng ngày càng chậm.


1
Bạn đã thử nhân rộng điều này với vim -Nu NONE -c 'syntax on'? Bạn đã làm theo các mẹo gỡ lỗi trên bài đăng
akshay

Kiểu gì? Bất kì?
romainl

1
Hồng ngọc. Quả thực nó có thể chỉnh sửa được -u NONEvì vậy nó phải là một số plugin sau đó. Đoán câu trả lời cho hầu hết các câu hỏi là 'vô hiệu hóa plugin cho đến khi bạn tìm ra thủ phạm' :(
fireev

Nhưng vấn đề là - sự chậm trễ dường như tích lũy theo thời gian. Khi tôi mở tập tin từ đầu thì không sao. Sau một thời gian nó càng ngày càng chậm.
fireev

Câu trả lời:


13

Các phiên bản Vim gần đây có :syntimelệnh khắc phục sự cố làm nổi bật cú pháp bằng cách tạo một báo cáo về thời gian mỗi nhóm cú pháp mất bao lâu để khớp. Điều này rất hữu ích và nhanh chóng cho phép bạn tìm ra thủ phạm; Nhược điểm duy nhất là bạn cần một bản dựng Vim (thường là "LỚN") với khả năng định hình được kích hoạt. :help :syntimecung cấp hướng dẫn tốt làm thế nào để sử dụng nó.

Ngoài ra, bạn có thể thử xóa các tập lệnh cú pháp riêng lẻ khỏi ~/.vim/syntax/$VIMRUNTIME/syntax/(theo hiện tại 'filetype'), sau đó đi sâu hơn bằng cách xóa các phần của định nghĩa cú pháp bên trong tập lệnh.


Hmm thú vị, âm thanh như thế này là một cái gì đó liên quan đến thẻ. Dòng hàng đầu mất nhiều thời gian nhất có các phương pháp từ các dự án khác của tôi. 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?\ ....- đây rõ ràng là từ thư mục khác. Vô hiệu hóa thẻ?
fireev

Bạn có sử dụng một plugin làm nổi bật các thẻ, chẳng hạn như vim-easytags không? Điều đó thực sự có thể gây ra sự chậm lại.
Ingo Karkat

Đúng, vô hiệu hóa nó, không phải là những con số lành mạnh một lần nữa. Cảm ơn.
fireev

Hmm bây giờ nó lại hoạt động trở lại, lần này là: 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= - Bất cứ điều gì tôi có thể làm về nó?
fireev

1
Nó có thể là công cụ regrec mới; thử :set regexpengine=1(tốt nhất trong trường hợp Vim mới, trước khi mở tệp Ruby).
Ingo Karkat

5

Một nút cổ chai điển hình khác trong phần nổi bật cú pháp của vim là gấp. Chỉnh sửa có thể trở nên rất chậm nếu một nếp gấp chứa nhiều mục cú pháp (về cơ bản có nghĩa là nó đi qua nhiều dòng), vì vim sẽ làm mới tất cả cú pháp cho mỗi ký tự được chèn.

Nếu đây là những gì bạn đang gặp phải thì tôi khuyên bạn nên sử dụng plugin FastFold . Plugin này xác định các nếp gấp cú pháp và thay thế chúng bằng các nếp gấp thủ công, làm nổi bật cú pháp của vim nhanh hơn nhiều.


1

Đây là những gì tôi đã làm cuối cùng:

  • Đã xóa xolox/vim-easytags
  • Đã xóa xolox/vim-misc
  • Thay thế kien/ctrlp d11wtq/ctrlp_bdeletetacahiroy/ctrlp-funkyvới junegunn/fzf
  • Bộ regexpengine=1

Ngay bây giờ Vim mịn như bơ nhưng tôi không có thẻ nữa. Thở dài...


1
Vim có các thẻ hỗ trợ tích hợp. Bạn không cần bất kỳ plugin của bên thứ ba nào (trừ ctags để tạo tệp thẻ). Xem bài viết Effortless Ctags With Git của Tim Pope. Tôi sử dụng điều này và nó hoạt động kỳ diệu. Cũng xem :help tag-commandsđể nhảy đến một thẻ. Tôi coi ctags khá cần thiết khi làm việc với Vim. Nó làm cho điều hướng siêu đơn giản, và bạn thậm chí có thể tự động hoàn thành với :help i_Ctrl-x_Ctrl-]!
akshay

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.