Vim 定义用于生成和加载错误文件的命令

Vim 定义用于生成和加载错误文件的命令,vim,go,Vim,Go,我想定义一个命令,该命令将首先生成当前的Go源文件并加载errors.err文件,以便进一步使用:cnext或:clist等命令 我所拥有的: 我将以下行添加到我的.vimrc: command Gobuild !go build %:t | grep -v "^\#" | tee errors.err 但是我必须在:Gobuild之后执行:cfile,因为这不是自动完成的。如何自动加载错误.err文件?试图将:cfile附加到命令,但没有帮助。加载后自动删除错误。err也很有用 我知道有一种

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

我所拥有的:

我将以下行添加到我的
.vimrc

command Gobuild !go build %:t | grep -v "^\#" | tee errors.err
但是我必须在
:Gobuild
之后执行
:cfile
,因为这不是自动完成的。如何自动加载
错误.err
文件?试图将
:cfile
附加到命令,但没有帮助。加载后自动删除
错误。err
也很有用

我知道有一种方法可以用
make
做类似的事情,但我不喜欢它

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

这里
@
防止
make
回显命令,
grep
过滤掉
#命令行参数
行,并且
tee
不会因为
grep
的错误代码而麻烦
make
grep
返回错误代码,注意要过滤掉)
tee
总是返回0,
OK
错误代码

UPD:更好的解决方案

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

一般来说,整个构建和报告错误业务围绕两个选项展开:
'makeprg'
'errorformat'
以及
:make
和一系列快速修复相关命令的组合,如
:copen
:cnext
。在
~/.vimrc
中添加几行就可以了


作为一些示例代码和。

您不喜欢
:make
?@romainl它看起来怎么样?对我来说,以下方法很有效:
:make src=“%:t”
,而
makefile
make:
go build${src}
,但是长的:make命令并不方便。我不想创建makefile,因为我通常在随机文件夹中创建随机文件。@o2genum您不需要创建任何makefile,请参见
:h'makeprg'
。上次更新(请参见我的问题)是我如何使用
makeprg
完成的。很好,谢谢。当我问你不喜欢
:make
:你的
:make
时,这就是我想说的。基于
:make
的解决方案是干净而可靠的。有什么不喜欢的?
autocmd FileType go set makeprg=go\ build\ %:t\ 2>&1\\\|grep\ -v\ '^\\#'\\\|tee
command Gorun !./%:r