【发布时间】:2011-09-23 12:50:52
【问题描述】:
有没有办法在 Windows XP 上运行控制台应用程序时禁止显示命令窗口?
详细信息:我正在从 Vim 调用一个(基于控制台的)程序。我想避免每次执行此操作时都显示命令窗口。
【问题讨论】:
标签: windows vim command-line windows-xp
有没有办法在 Windows XP 上运行控制台应用程序时禁止显示命令窗口?
详细信息:我正在从 Vim 调用一个(基于控制台的)程序。我想避免每次执行此操作时都显示命令窗口。
【问题讨论】:
标签: windows vim command-line windows-xp
尝试start /B <program name> 在没有新窗口的情况下启动程序。
【讨论】:
start 似乎是 cmd.exe 的内置命令,这意味着如果不先启动 cmd.exe,我将无法使用它。这意味着我不能在 Vim 中使用它。
:!start /b cmd /c "explorer.exe" 将打开一个资源管理器窗口而不创建控制台或显示它。
:! 表示在命令 shell 中执行其余部分,所以你只是在那里调用 cmd.exe start 命令。
start 作为 vim 外部命令时,命令窗口是否会为您显示?它不适合我...
你试过shell.vim吗?
xolox#shell#execute() 函数
这个函数可以启用其他 Vim 执行外部命令的插件 在后台(即 异步)不打开 Windows 上的命令提示符 窗口。
【讨论】:
我不敢相信没有人建议简单地使用 :silent
例如,我的 .vimrc 中有以下内容(Win7 上的 gvim)
"open windows explorer to the directory of the current file
:map <leader>ex :silent !Explorer %:p:h<CR>
【讨论】:
当我不想看到从 Vim 命令行调用的外部命令的输出时,我会在它们前面加上 :silent。但是,当在 MS Windows 下运行 GVim 时,这会导致命令窗口在屏幕上瞬间闪烁。过了一会儿,我对这种行为感到恼火,所以我研究了替代解决方案(这就是我遇到这个问题的原因)。
我想出的最佳解决方案是使用 Vim 的内置 system function,它可以在不打开外部命令窗口的情况下运行 shell 命令。虽然没有打印 shell 命令的输出,但可以通过v:shell_error 方便地获得其退出状态。它还具有可跨(所有)平台移植的优势。
示例(如果存在C:\Windows,则echo 语句应打印0):
call system("dir c:\windows")
echo v:shell_error
【讨论】:
system 功能在您希望没有外部命令窗口时非常有用。
你也许可以使用一些这样的自动热键脚本:
Loop {
WinWait, my command window title
WinHide
}
【讨论】:
我试图在 Windows 上的 vim 中使用 git-bash 作为我的 shell,但正如您所描述的,每当运行命令时都会打开命令提示符。我最终的解决方案是安装插件xolox/vim-shell 并将以下sn-p 添加到.vimrc:
if has('win32')
set shell=bash\ -c
set shellcmdflag=
set shellxquote='
set shellquote=
set shellredir=>
set noshelltemp "This prevents an external window from opening.
endif
【讨论】:
这个实用程序也可以完成这项工作:
【讨论】: