我试图从Vim中获取“make 0,成功,非零,如果错误”返回代码。 具体来说,我在Ubuntu上,使用v:shell_error不起作用。
经过挖掘,看看这个问题,这似乎是因为我的shellpipe设置,这是
shellpipe=2>&1| tee
teepipe输出回vim。 shell显然是从tee到vim返回错误代码,而不是从make。 我如何获取make的错误代码呢?
Linux errno 23和Linux errno 24之间的区别
CreateDirectory报告如果失败,但错误代码是ERROR_SUCCESS
如何查找适当的Windows系统错误代码以在我的应用程序中使用?
我应该处理哪些错误? 哪些是“致命的”?
你可以尝试做一个自定义的功能。 例如使用:call system("make > make.out")运行make重定向输出到文件中。 之后使用:cf make.out加载错误文件。 虽然从来没有尝试过。
最后, make结果也可以通过测试文件系统中是否存在结果来简单地检查:
:make | if !filereadable("whatever-make-was-supposed-to-create") | throw "Make Failed!!!" | endif
(这里'|'符号是vim的命令分隔符。)将其分配给键盘快捷键将不需要输入。
PS我通常试图让我的程序不会产生任何警告,所以我从来没有真正遇到过这个问题。 什么BTW导致另一个可能的解决方案:简单地删除警告(或简单地不需要的输出行)使用例如grep -v tabooword从make输出通过重写'makeprg' 。 实际上在帮助中描述的是: :h 'makeprg' 。
PPS 我开始使用VIM了…假设你也使用bash作为shell。 你有没有尝试添加到出口$ {PIpestATUS [0]}到shellpipe? 例如:
:set shellpipe=2>&1 | tee %s;exit ${PIpestATUS[0]}
只是测试了在Debian上,它为我工作。 :h 'shellpipe'为更多。
我现在唯一能想到的是为make和tee创建两个包装脚本。 我相信有一个更简单的方法,但现在你可以试试这个:
创建一个make包装脚本:
#!/bin/bash make $@ echo $? > ~/exit_code_cache
创建一个TEE包装器脚本:
#!/bin/bash tee $@ return `cat ~/exit_code_cache` # (or do something else with the exit code)
使用新的make :set makeprg=mymake并设置你自己的使用你的tee包装( shellpipe=2>&1 | mytee )的shellpipe=2>&1 | mytee 。
这没有经过测试,但这个想法应该清楚。 希望能帮助到你。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。