命令行执行vim -s脚本时如何不打开vim并返回终端错误信息
实现方法
完全可以实现,只需要给vim加上非交互模式、静默模式和错误输出的对应参数即可。
调整后的命令格式
你原有的执行命令可以修改为如下形式:
vim -e -s -V1 -S script.vim -c 'wqall' file.txt
参数说明
-e:启动ex非交互模式,不会加载vim的可视化交互界面,全程在后台执行操作-s:开启静默模式,屏蔽vim默认的版本信息、启动提示等无关输出-V1:设置日志输出级别为1,仅输出错误等级的信息,默认会输出到终端的标准错误流,你可以直接在终端看到所有运行报错-S script.vim:指定需要执行的vim脚本,等价于在vim内运行:source script.vim命令-c 'wqall':脚本执行完成后自动保存所有修改的文件并退出,避免进程无故挂起
额外使用提示
- 如果不需要保存对文件的修改,把末尾的
wqall替换为qall!即可 - 部分旧版本vim中指定执行脚本的参数为
-s,如果上述命令运行时提示找不到脚本,把-S script.vim换成-s script.vim即可 - 如果需要把错误信息导出到文件存储,可以添加标准错误重定向,示例:
vim -e -s -V1 -S script.vim -c 'wqall' file.txt 2> vim_run_errors.log - 注意不要在你编写的vim脚本中加入需要用户交互的命令(比如
:confirm、等待用户输入的自定义命令等),否则非交互模式下进程会卡住无法退出
内容的提问来源于stack exchange,提问作者vbd
相关产品推荐
相关产品推荐

