这可能听起来很傻,但我没有在帮助中找到它。
如何在运行:make
后确定QuickFix中的错误数量?
或者至少看看是否有任何错误,即错误> 0?
答案 0 :(得分:13)
您可以使用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
如果您只想要总数,请使用len(getqflist())
。例如:
:echo len(getqflist())
如果您只是想以交互方式知道,:cw
将在窗口中打开列表,如果有任何错误(如果已经打开并且没有错误则关闭它)。该缓冲区中的行数是错误数。
答案 1 :(得分:1)
您可以使用getqflist()
功能(请参阅:help getqflist()
):
:echo printf("Have %d errors", len(getqflist()))
答案 2 :(得分:0)
如果要确定快速修复中有多少个错误,而不仅仅是有多少项,那么您需要过滤getqflist:
" 'errorformat' matched %t as an error.
let error_count = len(filter(getqflist(), { k,v -> v.type == 'E' }))
" Anything with a destination file.
let jumpable_count = len(filter(getqflist(), { k,v -> v.bufnr != 0 }))
因此,如果您的快速修复程序看起来像:
test.py|387| import io, os datetime
|| ^
|| SyntaxError: invalid syntax
然后error_count == 0和jumpable_count == 1。