而不是让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