O "vim" que está sendo executado é provavelmente um arquivo .bat. Isso é o que o instalador padrão cria para você, de qualquer maneira.
Quando você usa diretamente um arquivo .bat de outro, o primeiro arquivo .bat não é mais executado, ele transfere o controle para o segundo sem retornar.
Portanto, isso encerrará seu arquivo .bat:
vim -u NONE -S dothis.vim
Mas isso deve funcionar:
call vim -u NONE -S dothis.vim
Agora, você disse "isso acontece se o comando estiver em linha ou for chamado de uma sub-rotina". Então, você tentou isso? Porque esse arquivo .bat funciona bem para mim:
@echo off
setlocal
echo starting Vim
call vim -u NONE -S dothis.vim
echo Vim done!
endlocal
echo on
Quando eu chamo esse arquivo .bat, vejo as duas mensagens de eco conforme o esperado.
Eu olhei para C: \ Windows \ vim.bat e verifiquei que não existem instruções exit
em qualquer lugar, o que poderia causar problemas no primeiro arquivo .bat se feito incorretamente. Se essa abordagem não funcionar, tente postar um arquivo .bat completo que não funcione para você. Como eu disse, o acima funciona para mim muito bem. Omitir call
faz apenas a primeira instrução de eco ser executada.