我使用自定义函数(当前驻留在.vimrc中)而不是:make或其他直接命令行工具来编译/检查我当前编辑的文件是否有错误。像这样:
function! CompileMyCode(...)
set errorformat=Error:\ %m\\,\ in\ line\ %l
let l:output = "Error: bad code!, in line 9"
return l:output
endfunction
command! -nargs=* CompileMyCode :call CompileMyCode(<f-args>)
在命令模式下使用新命令时,不会显示错误窗口。
:CompileMyCode | cwindow
我做错了什么?
修改 我现在尝试了以下也没有打开任何cwindow。
function! CompileMyCode(...)
set errorformat=Error:\ %m\\,\ in\ line\ %l
let l:output = "Error: bad code!, in line 9"
" I tried both of the following lines separately
cexpr l:output
call setqflist([l:output])
endfunction
建议的命令cexpr
和setqflist()
在我的示例中没有正确打开cwindow。也许有人可以提出完整的解决方案?
编辑2:
主要问题已经解决。这是我目前的代码:
let l:result = expand("%").'|8| errortext'
cexpr [ l:result, l:result ]
caddexpr ''
cwindow
此示例尊重vim似乎支持的默认错误格式。当cexpr
实际错误输出并使用errorformat
时,cwindow
似乎忽略了这一点。
尽管如此,我还是希望在输出中坚持使用默认的错误格式,而不必依赖自定义errorformat
谢谢你的回答!
答案 0 :(得分:3)
我使用cexpr l:output
做了类似的事情,而不是返回字符串,并将编译的输出放在quickfix窗口中。你可以在这里看到我的vim功能:http://www.zenskg.net/wordpress/?p=199
在quickfix列表中添加一个空行似乎允许显示cwindow。例如:
function! MyCompile()
let l:output = "Error: line 1"
cexpr l:output
caddexpr ""
cwindow
endfunction
答案 1 :(得分:2)
如果您已经可以在Vim中访问错误信息作为结构化数据(或者可以轻松获取),则可以使用setqflist()
。