只有在出现错误时才显示消息

分享于 

2分钟阅读

电脑

 

问题:

我在 .vimrc 中有这一行,这意味着"。保存. rb 文件时,请在 ruby -c 中运行"( 解释器检查的ruby 错误)。


autocmd BufWritePost *.rb!ruby -c <afile>



当我保存该文件时,我总是看到屏幕底部的输出,所以我习惯了它并开始忽略它。 如果有错误,我想要的是只看到输出。

我可以看到,当出现错误后,它说,在底部,它说"shell 返回 1"。"

如何修改此行以便仅在 shell 返回 1时显示一条消息? 是否有一种有条件的surpress输出可以从vim运行的shell 命令?


回答 1:

你应该看一下 Syntastic插件。 它自动检查当前缓冲区中文件的语法,支持多种文件的(。ruby,python,php,等等),并且只能显示出错误。


回答 2:

当Vim看到命令的退出状态时,命令已经向终端发送输出,因这里无法条件地抑制命令输出。

ruby(1) 页表示如果没有错误,-c 会导致 ruby 将消息"语法确定"发送到标准输出。 从测试中可以看出,语法错误报告给标准错误。 因此,通过将标准输出重定向到/dev/null 并使用 :silent 抑制命令的回显,可以抑制"语法确定"消息,例如。


autocmd BufWritePost *.rb silent!!ruby -c <afile>>/dev/null





显示  Message