我想定义一个命令,它首先构建当前的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
答案 0 :(得分:2)
一般来说,整个构建和报告错误业务围绕两个选项:'makeprg'
和'errorformat'
以及:make
和一堆与quickfix相关的命令(如{{1} }或:copen
。只需在:cnext
中添加几行即可。