是否有抑制输出的方法?
我试图在
make.sh
命令之前添加.tex
,但是没有用。我也尝试过这种方法,但没有成功。#1 楼
沉默应该在!./make.sh
之前,而不是au
之前。将silent
放在au
前面仅表示它将静默注册自动命令。它应该看起来像这样:au BufWritePost * silent! !./make.sh
使用
:silent
命令运行这样的外部命令时,一个问题是屏幕不会重绘,从而使屏幕空白屏幕。但是,vim确实有一个重绘屏幕的命令,可以这样使用:au BufWritePost * silent! execute "!./make.sh >/dev/null 2>&1" | redraw!
我需要使用execute命令的原因是因为
:!
命令使用找到的所有字符,这意味着我不能只执行silent! !./make.sh | redraw!
,因为bash会尝试解释!
之后的所有字符。错误消息,而:silent!
没有。同样,:silent
部分将>/dev/null 2>&1
的所有输出重定向到!./make.sh
。您可以在此处通过bash阅读有关i / o重定向的更多信息。相关帮助主题
/dev/null
:help :execute
:help :silent
:help :!
#2 楼
您直接问题的答案就像@EvergreenTree发布的一样。但是我觉得您缺少一些用于构建/编译/整理项目的Vim内置工具。最显着的是:make
和快速修复列表。使用
:make
可以为我们带来什么?使用快速修复程序,您可以在文件中的错误之间导航,因此您可以直接跳至编译器指出错误的位置(很方便吗?)。:make
运行
:make
将执行make程序:make
。然后使用'makeprg'
解析输出,并将每个条目放入快速修复列表中。但是,您可以通过'errorformat'
命令更改'makeprg'
或直接进行设置。还可以将其他参数传递给
make
。例如Makefile
注意:运行
'makeprg'
通常会在屏幕底部显示命令的输出,并提示要求按Enter。只需按Enter键,所有输出将在快速修复列表中可用。您可以通过:compiler
来禁止这种情况,例如:make
。静音制作的常见自定义命令是:
:make clean
您的快速修复程序列表将保存编译器的输出。使用以下命令导航快速修复程序列表。
打开快速修复程序。窗口
:make
关闭快速修复窗口:silent
/ :silent make
移至下一个/上一个项目:make
在底部打印当前错误或:copen
在此示例中显示特定错误3 我个人使用Tim Pope的无损插件浏览快速修复列表。
如何自动且无提示地运行
:cclose
? 您可以像在哪里一样使用
:cnext
来执行此操作。 /> 注意:应该更详细地说明
:cprev
autocmd上的文件模式,以免建立不相关的文件。还有更多吗? />这仅使用了Vim的一些内置命令以及几个autocmd来说服。当然,有些插件和工具可能对您有帮助
Dispatch.vim可用于异步运行
:cc
作业。同步插件语法在
:cc 3
之后检查文件。Ale.vim(异步棉绒引擎)是一个用于在编辑文本文件时在NeoVim和Vim 8中提供棉绒的插件。使管理快速修复程序列表变得容易。
使用旧的Makefile。除非您的
:make
非常复杂,否则您可能要考虑使用make。它以后可以扩展以执行更多任务,并且是常用的构建工具。您可以使用Vim Awesome搜索更多可能有用的插件。我将
:autocmd
和quickfix集成到我自己的工作流程中。我相信捕获构建过程的输出并捕获错误非常值得投资。作为额外的好处,您可能会更熟悉quickfix列表,并且可以将该列表用于其他应用程序,例如:cwindow
。 >评论
我在回答这个问题时曾想过:make,但没有包括在内。使用makefore编译事物是一个更好的主意。
–EvergreenTree
2015年4月25日,0:21
如何将autocmd更改为仅在特定文件上运行makeprg。
–伊本·赛义德(Ibn Saeed)
17年5月18日下午4:31
评论
第二个命令起作用了,尽管它仍然在屏幕上打印输出。另外,当脚本结束时,我不需要按Enter键,这很好。但是我想知道是否有任何方法可以完全抑制输出。
–安德烈·赫尔曼·贝塞拉(Andre Herman Bezerra)
15年4月24日在19:44
用执行“!./ make.sh> / dev / null 2>&1”代替执行“!./ make.sh”有帮助吗?这会将命令的所有输出重定向到/ dev / null。阅读tldp.org/LDP/abs/html/io-redirection.html,以获取有关bash中重定向的更多信息。
–EvergreenTree
15年4月24日在19:56
我应该想到这一点!有用。谢谢!
–安德烈·赫尔曼·贝塞拉(Andre Herman Bezerra)
15年4月24日在19:59