英文:
Define a command for building and loading errors file
问题
我想定义一个命令,首先构建当前的Go
源文件,并加载errors.err文件以便进一步使用:cnext
或:clist
命令。
我已经在我的.vimrc
中添加了以下行:
command Gobuild !go build %:t | grep -v "^\#" | tee errors.err
但是我必须在:Gobuild
之后执行:cfile
,因为它不会自动执行。如何自动加载errors.err
文件?尝试将:cfile
附加到命令中,但没有帮助。在加载后自动删除errors.err
也会很有用。
我知道可以使用make
来做类似的事情,但我不喜欢它。
**更新:**一个笨拙的临时解决方案(在我深入研究建议的解决方案之前):
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”错误代码。
**更新:**一个更好的解决方案
autocmd FileType go set makeprg=go\ build\ %:t\ 2>&1\\\|grep\ -v\ '^\\#'\\\|tee
command Gorun !./%:r
英文:
I want to define a command that will first build the current Go
source file and load errors.err file for further use of such commands as :cnext
or :clist
.
What I have:
I added the following line to my .vimrc
:
command Gobuild !go build %:t | grep -v "^\#" | tee errors.err
But I have to do :cfile
after :Gobuild
, as it is not done automatically. How can I auto-load errors.err
file? Tried to append :cfile
to the command, it didn't help. Auto-removing of errors.err
after it's loaded would be useful too.
I know there's a way to do something like this with make
, but I don't like it.
UPD: a clumsy, termorary solution (before I dive into suggested solutions):
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()
Here @
prevents make
from echoing commands, grep
filters out #command line arguments
line, and tee
is not to bother make
with error code from grep
(grep
returns error code it there's noting to filter out) — tee
always returns 0, OK
error code.
UPD: a better solution
autocmd FileType go set makeprg=go\ build\ %:t\ 2>&1\\\|grep\ -v\ '^\\#'\\\|tee
command Gorun !./%:r
答案1
得分: 2
一般来说,整个构建和报告错误的业务围绕着两个选项:'makeprg'
和'errorformat'
,以及:make
和一堆与quickfix相关的命令,如:copen
或:cnext
的组合。在你的~/.vimrc
中添加几行代码应该就足够了。
这篇文章有一些示例代码,这里有一个完整的插件。
英文:
Generally speaking, the whole build and report errors business revolves around two options: 'makeprg'
and 'errorformat'
and a combination of :make
and a bunch of quickfix-related commands like :copen
or :cnext
. Adding a couple of lines in your ~/.vimrc
should be all you need.
This article as some sample code and here is a full-fledged plugin.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论