Vim 静默启动 ConEmu(进入 Git Bash)-Windows 7 命令提示符被占用

Vim 静默启动 ConEmu(进入 Git Bash)-Windows 7 命令提示符被占用

从 Windows 7 命令提示符中:

ConEmu.exe /cmd "C:\Program Files\Git\bin\sh.exe" --login -i && exit

打开 ConEmu(或其中的新选项卡)登录到当前目录的 Git Bash,然后(非常快速地)退出命令提示符窗口,都好

从 gVim:

:silent !ConEmu.exe /cmd "C:\Program Files\Git\bin\sh.exe" --login -i
  1. 如果 ConEmu 已在运行,则打开一个新选项卡,登录 Git Bash 以获取缓冲区的目录,然后退出中间命令提示符窗口,并返回到当前缓冲区,都好
  2. 如果 ConEmu 没有运行,它会像上面一样打开并登录到 Git Bash,但中间的命令提示符窗口处于被占用状态,要求我终止它以解冻 gVim。 (附加$$ exit到上面的 gVim 命令没有帮助。)

问题:我该如何修复第二种 gVim 情况,使得 gVim 调用的命令提示符窗口像第一种 gVim 情况一样自动关闭?


补充 gVim 信息(回复@Maximus):

VIM - Vi IMproved 7.4(2013 年 8 月 10 日,编译于 2014 年 8 月 29 日 07:03:32)

SysinternalsProcess Monitor Filter发现Operation Process Start,这个命令层次结构(全部标记为“(ConEmu.exe)”)均由以下命令触发:!ConEmu

  1. "C:\Program Files\vim\vim74\vimrun" C:\windows\system32\cmd.exe /c
  2. C:\windows\system32\cmd.exe /c C:\windows\system32\cmd.exe /c
  3. C:\windows\system32\cmd.exe /c

vimrun.exe不在 %PATH% 中。


gVim 的另一种尝试,使用win32-!启动

Vim Wikia 的 Don Reba 解释道

如果您输入类似 :!calc 的命令(运行 Windows 计算器的 calc.exe),Vim 将打开一个 shell 窗口,然后从该 shell 启动一个新的 calc 窗口。关闭 calc 时,将出现提示“按任意键关闭此窗口...”,并且 Vim 会冻结,直到按下某个键为止。但计算器是一个 GUI 程序,因此它会在新进程中、新窗口中运行。因此,如果您想异步运行像计算器这样的 GUI 程序,只需输入 :!start calc

所以我尝试了:

!start ConEmu.exe /cmd "C:\Program Files\Git\bin\sh.exe" --login -i && exit

- 它不会占用 gVim 并在 gVim 的工作目录中的 Git 中打开一个新的 ConEmu 选项卡,但无法登录,报告sh.exe": &&: No such file or directory,然后是:

要执行的命令:“C:\Program Files\Git\bin\sh.exe”--login -i && exit
ConEmuC:Root 进程存活时间少于 10 秒,ExitCode=127。
按 Enter 或 Esc 关闭控制台...

相关内容