运行 vim 脚本退出批处理文件吗?(Windows .BAT/.CMD)

运行 vim 脚本退出批处理文件吗?(Windows .BAT/.CMD)

尝试使用批处理文件的一部分运行 vim 脚本

vim -u NONE -S dothis.vim

但令人费解的是,批处理文件在此行之后退出,而不是继续执行下一个语句。如果命令是内联的或作为子例程调用,就会发生这种情况。如果我创建另一个批处理文件来调用此命令,我的主批处理将继续执行,但屏幕上除了“请按任意键...”之外什么都不显示(实际文字可能略有不同,屏幕上不再可见),再也看不到批处理文件的执行(在这种情况下很重要)。

qa!如果这与问题有关(文件已经被编辑过) ,dothis.vim 将退出update;它会自动编辑子文件夹中的一堆文件。

答案1

正在运行的“vim”本身可能是一个 .bat 文件。无论如何,这是默认安装程序为您创建的。

当您直接从一个 .bat 文件使用另一个 .bat 文件时,第一个 .bat 文件不再运行,它会将控制权转移到第二个 .bat 文件,而不会返回。

因此这将结束你的 .bat 文件:

vim -u NONE -S dothis.vim

但这应该可行:

call vim -u NONE -S dothis.vim

现在,您说“如果命令是内联的或作为子例程调用,就会发生这种情况”。那么,您尝试过这个吗?因为这个 .bat 文件对我来说工作得很好:

@echo off
setlocal

echo starting Vim
call vim -u NONE -S dothis.vim
echo Vim done!

endlocal
echo on

当我调用这个.bat 文件时,我看到了预期的两个回显消息。

我查看了 C:\Windows\vim.bat 并确认没有exit任何语句,如果操作不正确,可能会导致第一个 .bat 文件中出现问题。如果此方法不起作用,请尝试发布对您不起作用的完整 .bat 文件。正如我所说,上面的方法对我来说很好。省略call只会运行第一个 echo 语句。

相关内容