Điều này nghe có vẻ ngớ ngẩn, nhưng tôi không tìm thấy nó trong sự giúp đỡ.VIM đếm/xác định số lỗi trong quickfix
Cách xác định số lỗi trong QuickFix, sau khi chạy :make
?
Hoặc ít nhất hãy xem có lỗi nào không, tức là lỗi> 0?
Điều này nghe có vẻ ngớ ngẩn, nhưng tôi không tìm thấy nó trong sự giúp đỡ.VIM đếm/xác định số lỗi trong quickfix
Cách xác định số lỗi trong QuickFix, sau khi chạy :make
?
Hoặc ít nhất hãy xem có lỗi nào không, tức là lỗi> 0?
Bạn có thể lập trình được danh sách các lỗi với getqflist()
:
getqflist() *getqflist()*
Returns a list with all the current quickfix errors. Each
list item is a dictionary with these entries:
bufnr number of buffer that has the file name, use
bufname() to get the name
lnum line number in the buffer (first line is 1)
col column number (first column is 1)
vcol non-zero: "col" is visual column
zero: "col" is byte index
nr error number
pattern search pattern used to locate the error
text description of the error
type type of the error, 'E', '1', etc.
valid non-zero: recognized error message
When there is no error list or it's empty an empty list is
returned. Quickfix list entries with non-existing buffer
number are returned with "bufnr" set to zero.
Useful application: Find pattern matches in multiple files and
do something with them: >
:vimgrep /theword/jg *.c
:for d in getqflist()
: echo bufname(d.bufnr) ':' d.lnum '=' d.text
:endfor
Nếu bạn chỉ muốn tổng số, sử dụng len(getqflist())
. ví dụ:
:echo len(getqflist())
Nếu bạn chỉ muốn biết một cách tương tác, :cw
sẽ mở ra danh sách trong cửa sổ nếu có bất kỳ lỗi (và đóng nó nếu nó đã được mở và không có lỗi). Số lượng các dòng trong bộ đệm đó là số lỗi.
Bạn chỉ có thể sử dụng getqflist()
chức năng (xem :help getqflist()
):
:echo printf("Have %d errors", len(getqflist()))
Nếu cửa sổ QuickFix chứa văn bản không được coi là một lỗi, danh sách trả về bởi 'getqflist()' sẽ chứa mục cho mỗi người trong các dòng. Vì vậy, bạn vẫn có thể có lỗi zero với 'len (getqflist())' trả về khác không. Bạn cần phải kiểm tra cờ 'hợp lệ' trong danh sách kết quả. Sử dụng hàm 'filter()' cho điều đó. – Ben
'len (bộ lọc (getqflist(), 'v: val.valid'))' sẽ cung cấp cho bạn số mục nhập nhanh hợp lệ. Trong nhiều trường hợp, nó sẽ bằng số lượng mục nhập, nhưng không phải lúc nào cũng vậy. Tìm kiếm ': help filter()' sẽ là một khởi đầu tốt để tìm ra điều đó. ;-) – Ben
Cảm ơn bạn đã trả lời. Tôi chỉ cần một số hướng dẫn và viết một phiên bản thông thường mà không sử dụng 'filter()', xem [gist của tôi] (https://gist.github.com/ih4cku/fa5d57f9f1dc5c03b6c36155bf3e2904) nếu bạn thấy thú vị. Rõ ràng, bằng cách sử dụng 'filter()' là thanh lịch hơn. @Ben – nn0p