重定向vim:输出到文件

时间:2016-07-23 22:09:23

标签: vim

我没有让vim打印出:make命令的输出,而是想读取文件中的输出(在vim中自动更新);这样我的编译文件就可以立即运行,而不必看到:make命令的输出。

我使用以下makefile

all: compile run

compile: file.cc
       g++ -o file file.cc

run: file
       ./file

如何重定向:make命令的输出,使其不会被vim打印到屏幕上?

3 个答案:

答案 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