定义用于构建和加载错误文件的命令

时间:2013-04-04 19:27:07

标签: vim go

我想定义一个命令,它首先构建当前的Go源文件并加载errors.err文件,以便进一步使用:cnext:clist等命令。

我有什么:

我在.vimrc添加了以下行:

command Gobuild !go build %:t | grep -v "^\#" | tee errors.err

但我必须在:cfile之后:Gobuild进行,因为它不是自动完成的。如何自动加载errors.err文件?试图将:cfile附加到命令,它没有帮助。加载后errors.err自动删除也很有用。

我知道有一种方法可以使用make执行此类操作,但我不喜欢它。

UPD:一个笨拙的,临时的解决方案(在我深入研究建议的解决方案之前):

function GoBuild()
    silent !echo -e "make:\n\t@go build \${src} | grep -v '^\#' | tee" > %:t"_makefile"
    make -f %:t"_makefile" src="%:t"
    silent !rm %:t"_makefile"
endfunction

command Gobuild call GoBuild()

此处@阻止make回显命令,grep过滤掉#command line arguments行,tee不会打扰make出错来自grep的代码(grep会返回错误代码,但它会过滤掉) - tee始终返回0,OK错误代码。

UPD:更好的解决方案

autocmd FileType go set makeprg=go\ build\ %:t\ 2>&1\\\|grep\ -v\ '^\\#'\\\|tee
command Gorun !./%:r

1 个答案:

答案 0 :(得分:2)

一般来说,整个构建和报告错误业务围绕两个选项:'makeprg''errorformat'以及:make和一堆与quickfix相关的命令(如{{1} }或:copen。只需在:cnext中添加几行即可。

This article作为示例代码和here is a full-fledged plugin