2011-06-27 108 views

回答

5

你嘗試shell.vim

的xolox#殼#執行()函數

此功能允許其他的Vim 插件在後臺執行外部命令 (即 異步地)而不打開 命令提示Windows上的窗口。

5

嘗試start /B <program name>在沒有新窗口的情況下啓動程序。

+1

這是從cmd窗口工作的一個很好的答案(所以+1)。但是,'start'似乎是cmd.exe的內置命令,這意味着如果不先啓動cmd.exe,就無法使用它。這意味着我無法在Vim中使用它。 – Szabolcs

+0

嗯? :!開始似乎是一個vim命令。因此,例如':!start/b cmd/c「explorer.exe」'將打開一個資源管理器窗口,無需創建控制檯或顯示它。 –

+0

@AchalDave:不,start不是那裏的vim命令。 ':!'意味着在命令shell中執行其餘部分,所以您只需在那裏調用'cmd.exe'' start'命令。 – orev

0

也許你可以使用這樣的一些AutoHotkey的腳本:

Loop { 
    WinWait, my command window title 
    WinHide 
} 
1

我不能相信沒有人曾建議簡單地使用:無聲

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

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

我現在不在Windows上,但是這不僅僅是壓制* Vim裏面的消息?我需要的是抑制每次彈出的黑色「命令提示符」窗口。 – Szabolcs

+0

我從我的.vimrc複製那行,對我來說效果很好。沒有它,我需要在執行後按下兩次輸入!explorer - 一次放棄彈出的cmd窗口,再次放在底部命令欄的gvim中。 – ash

+0

問題不在於按回車。這是關於完全抑制窗戶。我不希望每次執行特定操作時都會有一個窗口閃爍。 – Szabolcs

2

當我不想看到從Vim命令行調用的外部命令的輸出,我會在:silent之前加上它們。但是,這會導致在MS Windows下運行GVim時,屏幕上會立即閃爍一個命令窗口。一段時間後,我對這種行爲感到惱火,所以我研究了其他解決方案(這就是我遇到這個問題的方式)。


我想出了最好的解決辦法是使用Vim的內置system function它運行shell命令,而無需打開外部命令窗口。儘管shell命令的輸出未打印,但其退出狀態可通過v:shell_error方便地獲得。它還具有可跨所有平臺移植的優點。

的例子(echo聲明應打印0如果C:\Windows存在):

call system("dir c:\windows") 
echo v:shell_error 
+1

當您希望沒有外部命令窗口時,「系統」功能非常棒。 – zhenguoli

相關問題