而不是讓vim輸出:make命令的輸出,我想讀取文件中的輸出(它會在vim中自動更新);這樣我的編譯文件就可以馬上運行,而不必看到:make命令的輸出。重定向vim:使輸出到文件
我用下面的Makefile
all: compile run
compile: file.cc
g++ -o file file.cc
run: file
./file
怎樣才能重定向的輸出:在某種程度上作出命令,它是不是也印製的Vim屏幕?
而不是讓vim輸出:make命令的輸出,我想讀取文件中的輸出(它會在vim中自動更新);這樣我的編譯文件就可以馬上運行,而不必看到:make命令的輸出。重定向vim:使輸出到文件
我用下面的Makefile
all: compile run
compile: file.cc
g++ -o file file.cc
run: file
./file
怎樣才能重定向的輸出:在某種程度上作出命令,它是不是也印製的Vim屏幕?
首先我們有https://vi.stackexchange.com/,你可以在那裏得到關於Vim的更好的答案。
其次,我認爲,一個Makefile沒有地方來運行程序,背後make
想法是趕上編譯錯誤。但是,假設你有你的原因(例如./file
打開圖形顯示),有一對夫婦的方式在Vim中執行此:
對於您可以設置makeprg
執行重定向開始:
:set makeprg=make\ >/dev/null\ 2>&1
(您可以更改/dev/null
到實際文件)
但是,這仍然讓行:
Press ENTER or type command to continue
並要求確認,當您知道沒有輸出時可能會感到煩惱。
爲了擺脫確認線,你可以使用silent
如下:
set makeprg=make\ >/dev/null\ 2>&1
function! MyMake()
silent make
redraw!
endfunction
command Mm call MyMake()
現在你可以這樣做:
:Mm
要執行的品牌和走時背部要挺直到Vim。 (僅在某些終端中需要redraw!
)
您可以執行以下命令:
:silent exec "!make >Output" | :redraw!
文件Output
包含執行make
命令的最後輸出。
使用:silent
刪除輸出並按「回車」提示。我建議一個很好的映射或命令:
command! -nargs=* Smake silent make <args>
nnoremap <f5> :silent make<cr>
:make
將填充與:make
結果quickfix列表。使用:copen
打開quickfix窗口。
如需更多幫助,請參見:
:h :command
:h silent
:h :make
:h 'makeprg'
:h quickfix
它做吧!我如何使這個過程在後臺運行;所以屏幕不會立即切換到外殼? –
@MusséRedi - 你有兩種選擇。hacky是'設置makeprg = make \>/dev/null \ 2>&1 \&',並讓整個make進程在後臺運行。正確的是使用頻道(請參閱':H頻道'),但我會建議針對頻道,因爲它們仍然是非常錯誤的。 (並且我嘗試在VimScript中使用通道編碼的經驗非常糟糕。) – grochmal