Làm thế nào để xem các plugin nào đang làm Vim chậm?


318

Có cách nào để cấu hình các plugin Vim không?

MacVim của tôi trở nên chậm hơn và chậm hơn khi tôi mở lớn .py. Tôi biết tôi có thể bỏ chọn tất cả các plugin và chọn lại từng cái một để kiểm tra xem plugin nào là thủ phạm, nhưng có cách nào nhanh hơn không?

Dotvim của tôi ở đây: https://github.com/charlax/dotvim



1
Thật ra, khởi nghiệp là tốt. Vim trở nên chậm sau vài phút sử dụng. Nó đặc biệt quan tâm đến .pycác tập tin.
charlax

Tìm kiếm nhị phân con đường để đi. Bạn đã hỏi câu hỏi của bạn 2 giờ trước, nguyên nhân của vấn đề của bạn sẽ được tìm thấy trong thời gian đó. autocmdLinh cảm của Ingo Karkat nghe có vẻ hợp lý với tôi.
romainl

Điều đó đúng - nhưng bạn không nghĩ rằng nếu có cách nào có được kết quả tương tự chỉ sau một giờ thì tốt hơn? Hơn nữa, khởi động vẫn ổn, sau vài phút sử dụng, nên sẽ mất một thời gian rất dài. autocmdtrông thật hấp dẫn. Chỉ cần thử nó nhưng Vim không chậm.
charlax

1
Chỉ phải đối mặt với cùng một vấn đề, nhưng trên các tập tin ruby ​​lớn. Tìm thấy folding=syntaxcó thể chậm lại. Đã thử folding=manualvà bây giờ mọi thứ đều hoạt động tốt
Aleksandr K.

Câu trả lời:


496

Bạn có thể sử dụng hỗ trợ lược tả tích hợp: sau khi khởi chạy vim do

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

(không giống như bỏ thuốc lá noautocmdlà không thực sự cần thiết, nó chỉ làm cho vim thoát nhanh hơn).

Lưu ý: bạn sẽ không nhận được thông tin về các chức năng đã bị xóa trước khi thoát vim.


13
Thật đáng kinh ngạc. Tôi đã có thể thấy rằng EasyTags là thủ phạm. Cảm ơn rất nhiều!
charlax

5
điều này giúp tôi phát hiện "vim-gitgutter" là guốc.
Sebastián Grignoli

6
@subjectego :set more | verbose function {function_name}sẽ hiển thị cho bạn nội dung chức năng và vị trí của nó.
ZyX

26
Nếu nó không rõ ràng, kết quả profile.loglà một tệp trong thư mục hiện tại của phiên Vim của bạn.
Micah Smith

7
Nhảy đến cuối profile.logđể xem danh sách các hàm được sắp xếp theo tổng thời gian ( profile.logdường như vô dụng với tôi trước khi tôi tìm thấy nó có một danh sách được sắp xếp ở cuối).
Andrey Portnoy

78

Tôi tìm thấy một phương thức xây dựng vim rất hữu ích khác để hiển thị các thông báo thời gian chính xác trong khi tải .vimrc của bạn.

vim --startuptime timeCost.txt timeCost.txt

Hãy chạy:

:help --startuptime

trong VIM để có thêm thông tin.


3
Chỉ trong trường hợp bất cứ ai khác thắc mắc, điều này không tồn tại trong tất cả các bản phát hành vim / gvim. Không có trong kho Win Gvim 7.4 ở đây (mặc dù nó được ghi lại trong viminfo)
thynctank

1
@thynctank Tôi đã thử trên gvim 7.4 của tôi và nó đã hoạt động. Đây là phiên bản của tôiIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
feihu

Câu trả lời tốt nhất! Đã giúp tôi xác định plugin chậm nhất khiến tôi tức giận mỗi khi bắt đầu vim. Thanx :)
kovpack

Điều này và cơ bản -Vcho thấy nó không phải là cục bộ $HOMEgây ra sự cố
bsb

Bạn cần phải thực thi :eđể làm mới tập tin. Sắp xếp tệp đúng vị trí theo tổng thời gian thực hiện cho mỗi op như vậy:%! sort -k2 -nr
Ashutosh Jindal

31

Nó có thể là một plugin hoặc cú pháp tô sáng; Hãy thử :syntax offkhi điều này xảy ra và xem liệu Vim có nhanh hơn không.

Với các plugin, một "sự chậm chạp chung" thường đến từ autocommands; một :autocmddanh sách tất cả Điều tra bằng cách giết một số trong số họ thông qua :autocmd! [group] {event}. Tiến hành từ các sự kiện thường xuyên hơn (ví dụ CursorMoved[I]) đến những sự kiện ít thường xuyên hơn (ví dụ BufWinEnter).

Nếu bạn có thể tái tạo một cách đáng tin cậy phần nào sự chậm chạp, một tìm kiếm nhị phân có thể giúp: Di chuyển đi một nửa các tệp trong ~/.vim/plugin/đó, phần còn lại, lặp lại trong tập chậm.

Nếu bạn thực sự cần nhìn dưới mui xe, hãy lấy phiên bản Vim có :profilelệnh được kích hoạt. (Không phải phiên bản BIG Windows vanilla, nhưng phiên bản đi kèm với Cygwin có nó; ngoài ra, việc tự biên dịch khá dễ dàng trong hầu hết các bản phát hành.)


17

Tôi thấy hữu ích khi in tất cả hoạt động Vim vào một tệp bằng cách bắt đầu Vim với -Vtùy chọn:

vim -V12log

Điều này cung cấp mức độ dài tối đa (cấp 12) và xuất nó ra tệp log. Sau đó, bạn có thể thực hiện một số hành động Vim mà bạn biết là chậm, sau đó xem chức năng / ánh xạ nào đang được gọi trong nội bộ.


10
nhưng không có thời gian trên nhật ký
Kokizzu

7

Nếu bạn gặp vấn đề với các hoạt động cập nhật màn hình ( ^L, cuộn, v.v.) bị chậm, vấn đề của bạn có thể là một tệp tô sáng cú pháp không hiệu quả. Bạn có thể kiểm tra điều này bằng cách tạm thời tắt tính năng tô sáng cú pháp ( :syn off) và xem sự cố có biến mất không; nếu bạn muốn tìm hiểu chi tiết, bạn có thể cấu hình tệp cú pháp hiện tại bằng cách sử dụng :syntime:

  1. Mở một tệp gây ra cú pháp làm nổi bật các vấn đề hiệu suất.
  2. Chạy :syntime onđể bắt đầu hồ sơ.
  3. Cuộn qua tập tin một chút.
  4. Chạy :syntime reportđể tạo một báo cáo. Các mẫu được liệt kê đầu tiên trong báo cáo là những mẫu mất nhiều thời gian nhất để xử lý.

2
Nếu có vẻ như tập tin tô sáng cú pháp là thủ phạm, thì hành động tiếp theo là gì?
Khán giả6
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.