Có một log vim thời gian chạy nhật ký không?


130

Đôi khi tôi thử một tùy chỉnh / lệnh trong vimrc của tôi. Mọi thứ đều chính xác, nhưng nó không hoạt động.

Thật khó để biết điều gì xảy ra khi vim khởi động và biết lệnh nào thất bại hay không, vì vậy thật khó để gỡ lỗi những gì có thể gây ra sự cố trong vimrc của tôi. Đó là một cách tiếp cận lỗi dùng thử, tốn thời gian và thực sự là PITA. Ví dụ: tôi gặp vấn đề với plugin snipmate trong một số tệp và không biết gì về cách khám phá vấn đề.

Có "nhật ký thời gian chạy" khi vim khởi động không, cho biết lệnh nào được thực thi, lệnh nào bị lỗi và như vậy? Điều này sẽ giúp tôi rất nhiều.

Câu trả lời:


163

chạy vim với tùy chọn -V [N] sẽ thực hiện một bản ghi thời gian chạy khá lớn, ở đây N là mức gỡ lỗi.

vim -V9myVim.log

sẽ tạo một bản ghi gỡ lỗi cấp 9 trong thư mục hiện tại với tên tệp myVim.log


Tôi thích cả hai cách tiếp cận từ Zyx và bạn, nhưng theo tôi thì cách tiếp cận của bạn tốt hơn bởi vì nó đơn giản hơn, chỉ trong cmd và tôi có thể đặt đường dẫn đến nhật ký mỗi khi tôi chạy nó và tôi không cần phải "thổi phồng" "Vimrc của tôi. Và chào mừng đến với SO!
Ai đó vẫn sử dụng bạn MS-DOS

2
Xem thêm :h 'verbose':h :verbose.
Palec

MacVim dường như không hỗ trợ -Vtùy chọn hoặc bất kỳ tùy chọn dòng lệnh nào.
emallove

Điều này sẽ mở một bộ đệm vim trống mà không có tên tệp. Tiếp theo là gì?
Geoff Langenderfer

104

:messages hiển thị tất cả các cảnh báo, lỗi và thông báo thông tin xuất hiện (có thể ngắn gọn) trong dòng trạng thái vim.

:echo errmsg in thông báo lỗi gần đây nhất.

g<là một tính năng khác ít người biết đến. Từ :help g<:

Các g<lệnh có thể được sử dụng để xem trang cuối cùng của đầu ra lệnh trước đó. Điều này đặc biệt hữu ích nếu bạn vô tình gõ <Space>vào dấu nhắc nhấn enter.

Ví dụ thử :!lssau đó hủy bỏ dấu nhắc, sau đó nhấn g<.


15

Đặt chức năng này vào .vimrc:

function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction

Sau đó tạo thư mục ~/.log/vimvà gọi ToggleVerbose()để đăng nhập ~/.log/vim/verbose.log. Lưu ý rằng bạn có thể bắt gặp «biến được lồng quá sâu để hiển thị» lỗi thường không xuất hiện chỉ vì bạn đã tăng mức độ dài dòng của mình.


2

Tôi không nghĩ rằng có một nhật ký thời gian chạy, mỗi lần , nhưng bạn có thể chạy nó trong chế độ gỡ lỗi.
http://web.archive.org/web/20090323034339/http://www.troubledh Bootwiki.org/Debugging_Vim_Scripts


2
Trang web này dường như đã bị hack hoặc một cái gì đó. Cho đến khi nó được sửa, hãy xem phiên bản được lưu trong bộ nhớ cache tại web.archive.org/web/20090323034339/http:// .
Mu Tâm

Tôi đã bị cấm 403
Frank Fang


1

Điều này có thể đi ngược lại mọi thứ SO đại diện, nhưng đây là những gì tôi làm: Tôi chỉ cần nhấn vào màn hình in ngay khi cảnh báo xuất hiện và nhìn vào bức tranh.


Nút tạm dừng có ảnh hưởng tương tự không, trừ đi giấy bị lãng phí?
Rook

Cho đến bây giờ tôi không bao giờ biết phím tạm dừng đã làm gì. Trong mọi trường hợp, tôi không nghĩ rằng nó làm bất cứ điều gì trong Linux stackoverflow.com/questions/92802/
mẹo

2
Thiết bị đầu cuối FWIW, * nix sẽ tạm dừng đầu ra trên Ctrl-S và tiếp tục trên Ctrl-Q.
joeytwiddle

1

Tôi đã phải thêm "set nocp" để sử dụng hàm "ToggleVerbose ()" khi chạy trong root vì & verbose

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.