通过shell脚本退出或关闭vim

use*_*247 3 linux vim

我正在编写一个脚本文件,我必须在其中关闭打开的 vim 文件。那么,如何通过 shell 脚本关闭或退出文件?我试过这个解决方案,但没有运气。我这样试过:

vim path_to_file/abc +qa
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 5

为了从外部 shell 脚本关闭现有的、正在运行的 Vim,您要么必须告诉该 Vim 实例退出,要么让操作系统完成这项工作。

与 Vim 通信

Vim 内置了客户端-服务器功能,请参阅:help remote.txt。如果您知道服务器名称(您可以使用 获取列表vim --serverlist),您可以向其发送命令。例如,这告诉 Vim 实例GVIM退出:

$ vim --servername GVIM --remote-send '<C-\><C-N>:quitall!<CR>'
Run Code Online (Sandbox Code Playgroud)

通过操作系统

蛮力:杀死所有正在运行的 Vim 实例 :-)

$ killall vim
Run Code Online (Sandbox Code Playgroud)

要查找打开特定文件的 Vim 实例,lsof可以使用该工具。因为 Vim 只在:writes上打开文件本身,我们必须搜索它的(永久打开的)交换文件(即.file.swp代替file):

$ kill `lsof -t /path/to/.file.swp`
Run Code Online (Sandbox Code Playgroud)