【问题标题】:Suppress command window when running console application on Windows在 Windows 上运行控制台应用程序时抑制命令窗口
【发布时间】:2011-09-23 12:50:52
【问题描述】:

有没有办法在 Windows XP 上运行控制台应用程序时禁止显示命令窗口?

详细信息:我正在从 Vim 调用一个(基于控制台的)程序。我想避免每次执行此操作时都显示命令窗口。

【问题讨论】:

    标签: windows vim command-line windows-xp


    【解决方案1】:

    尝试start /B <program name> 在没有新窗口的情况下启动程序。

    【讨论】:

    • 这是一个很好的答案(所以+1),可以在 cmd 窗口中使用。但是,start 似乎是 cmd.exe 的内置命令,这意味着如果不先启动 cmd.exe,我将无法使用它。这意味着我不能在 Vim 中使用它。
    • 嗯? :!start 似乎是一个 vim 命令。例如:!start /b cmd /c "explorer.exe" 将打开一个资源管理器窗口而不创建控制台或显示它。
    • @AchalDave:不,这里的 start 不是 vim 命令。 :! 表示在命令 shell 中执行其余部分,所以你只是在那里调用 cmd.exe start 命令。
    • 感谢您提供避免使用外部插件的答案。这应该是imo接受的答案。 @Szabolcs,当使用 start 作为 vim 外部命令时,命令窗口是否会为您显示?它不适合我...
    • @MichaelMurphy 抱歉,这个问题是大约 10 年前提出的,我不再使用 Windows。我预计情况可能已经改变。
    【解决方案2】:

    你试过shell.vim吗?

    xolox#shell#execute() 函数

    这个函数可以启用其他 Vim 执行外部命令的插件 在后台(即 异步)不打开 Windows 上的命令提示符 窗口。

    【讨论】:

      【解决方案3】:

      我不敢相信没有人建议简单地使用 :silent

      例如,我的 .vimrc 中有以下内容(Win7 上的 gvim)

      "open windows explorer to the directory of the current file
      :map <leader>ex :silent !Explorer %:p:h<CR> 
      

      【讨论】:

      • 我现在不在 Windows 上,但这不只是抑制 inside Vim 的消息吗?我需要的是抑制每次弹出的黑色命令提示符窗口。
      • 我从我的 .vimrc 中复制了该行,它对我很有效。没有它,我需要在执行 !explorer 后按两次回车 -- 一次丢弃弹出的 cmd 窗口,然后再次在底部命令栏中的 gvim 中。
      • 问题不在于按回车。这是关于完全压制窗户。我不希望每次执行某个操作时都会弹出一个窗口。
      • 我明白了。那么你是对的, :silent 对此没有帮助,cmd窗口仍然会闪烁。
      【解决方案4】:

      当我不想看到从 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 功能在您希望没有外部命令窗口时非常有用。
      【解决方案5】:

      你也许可以使用一些这样的自动热键脚本:

      Loop {
          WinWait, my command window title
          WinHide
      }
      

      【讨论】:

        【解决方案6】:

        我试图在 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
        

        【讨论】:

          【解决方案7】:

          这个实用程序也可以完成这项工作:

          http://www.ntwind.com/software/utilities/hstart.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多