我正在编写一个脚本文件,我必须在其中关闭打开的 vim 文件。那么,如何通过 shell 脚本关闭或退出文件?我试过这个解决方案,但没有运气。我这样试过:
vim path_to_file/abc +qa
Run Code Online (Sandbox Code Playgroud)
为了从外部 shell 脚本关闭现有的、正在运行的 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 只在:write
s上打开文件本身,我们必须搜索它的(永久打开的)交换文件(即.file.swp
代替file
):
$ kill `lsof -t /path/to/.file.swp`
Run Code Online (Sandbox Code Playgroud)