Linux 从其他选项卡干净地关闭所有vim进程

Linux 从其他选项卡干净地关闭所有vim进程,linux,vim,Linux,Vim,我使用下面的Linux命令来杀死所有vim进程 ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill 上述命令正在工作,但输出: Vim: Caught deadly signal TERM 有没有另一种干净的方法可以杀死它?只要您能够在中途丢失所有未保存的更改并停止任何后台作业,您就可以使用-s选项从kill命令发送不同的信号。默认为信号15,SIGTERM;您可以执行kill-s9来彻底杀死进程。这里有一个

我使用下面的Linux命令来杀死所有vim进程

ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill
上述命令正在工作,但输出:

Vim: Caught deadly signal TERM

有没有另一种干净的方法可以杀死它?

只要您能够在中途丢失所有未保存的更改并停止任何后台作业,您就可以使用
-s
选项从
kill
命令发送不同的信号。默认为信号
15
SIGTERM
;您可以执行
kill-s9
来彻底杀死进程。这里有一个很好的参考

因此,您的最终命令如下所示:

ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill -s 9
这不会产生任何关于致命信号的警告。这也是一种相当恶劣的做事方式,如果你有一个非平凡的vim设置,可能会导致一些恶劣的行为

正如@moopet在评论中所说的,如果您将命令的输出重定向到
/dev/null
,您仍然可以使用
SIGTERM
。这不会比SIGKILL更好,因为Vim不会自动保存您的文件,但它可能会给任何后台任务一些时间来清理


或者,如果您愿意更改设置,您可以始终将vim作为服务器运行,并从终端向其发出保存和关闭命令。上面有一个很好的解释。

您是否需要能够从外部终止Vim进程?为什么不切换到您的gVim并执行
:xa
?不。GUI不是可选的。我正在使用shell脚本使用上述命令终止所有vim进程。在linux上,您将查找
killall gvim
。@moopet该命令本身仍将从vim生成相同的警告。像
kill
killall
默认情况下会发送
SIGTERM
;这就是维姆所抱怨的。因此,如果OP要使用
killall
方法,他们需要使用
killall-9gvim
,或者同样凶残的东西。@Das_Geek我想这取决于你所说的“干净”是什么意思。对我来说,这意味着发送SIGTERM并允许流程进行整理。如果您只是想隐藏警告,请将其重定向到
/dev/null