我没有让vim打印出:make命令的输出,而是想读取文件中的输出(在vim中自动更新);这样我的编译文件就可以立即运行,而不必看到:make命令的输出。
我使用以下makefile
all: compile run
compile: file.cc
g++ -o file file.cc
run: file
./file
如何重定向:make命令的输出,使其不会被vim打印到屏幕上?
答案 0 :(得分:1)
您可以执行此命令:
private void buttonCamera_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.ImageLocation = CameraIP;
// ip is http://192.168.1.1:8080/?action=snapshot
}
文件:silent exec "!make >Output" | :redraw!
包含已执行的Output
命令的最后一个输出。
答案 1 :(得分:1)
首先我们有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!
)
答案 2 :(得分:0)
使用:silent
删除输出,"按enter键"提示。我建议一个很好的映射或命令:
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