如何在Vim中隐藏:!command命令输出并让其后台运行
在Vim中隐藏Shell命令输出并后台运行的方法
刚好我之前也折腾过这个需求,给你几个实用的方案,完美解决看不到输出、不用按回车、命令后台跑的问题:
用
:silent配合Shell重定向
这是最直接的写法,把命令改成这样::silent !your_command > /dev/null 2>&1 &拆解一下各个部分的作用:
:silent:告诉Vim不要显示命令执行后的提示信息(就是那个烦人的“Press ENTER or type command to continue”)> /dev/null:把命令的标准输出(正常打印的内容)丢弃掉2>&1:把命令的错误输出(比如报错信息)也重定向到和标准输出一样的地方(也就是/dev/null),确保完全看不到任何输出&:让Shell命令在后台运行,不会阻塞你的Vim操作
用Vim内置的
system()函数
如果是在Vim脚本里调用,或者想更简洁,可以用这个函数::call system('your_command > /dev/null 2>&1 &')system()函数本身就不会触发Vim的提示框,加上重定向和后台符号后,同样能实现完全静默的后台执行。
小提示
如果是在Windows系统上,把/dev/null换成NUL就行,其他部分用法一致。另外要确保你的命令不需要交互(比如输入密码之类的),后台运行的交互命令可能会卡住或者出问题哦。
内容的提问来源于stack exchange,提问作者Hanlon
相关产品推荐
相关产品推荐

