vim 捕获外部输出信息?

29 views
Skip to first unread message

闲耘(tm)

unread,
Oct 17, 2009, 7:01:30 PM10/17/09
to vim...@googlegroups.com
我做了如下映射

autocmd FileType cpp nmap <F9> :make<CR> :copen<CR> <C-W>10_
autocmd FileType cpp nmap <F10> :exe "!gcc -o ".expand("%:r").".exe ".expand("%")<cr>
autocmd FileType cpp nmap <F5> :exe "!".expand("%:r").".exe"<Left>

在C++代码中按<F10>编译单个文件,按<F5>运行。

问题是按<F10>编译时会调出新窗口,能否让vim捕获输出信息到Quickfix窗口?
最好可以通过这些错误信息快速定位到对应代码行,好像vim本身会根据错误信息格式来鉴别?

p.s. Editplus也有捕获输出功能。

--
闲耘™ (@hotoo, xianyun.org)

Yongwei Wu

unread,
Oct 18, 2009, 2:03:44 AM10/18/09
to vim...@googlegroups.com
你可以让快捷键设置'makeprg',然后调用:make。帮助文件里看,你要的都能做得到。

2009/10/18 闲耘 <hoto...@gmail.com>:

> 闲耘(tm) (@hotoo, xianyun.org)

--
Wu Yongwei
URL: http://wyw.dcweb.cn/

闲耘(tm)

unread,
Oct 18, 2009, 3:15:31 AM10/18/09
to vim...@googlegroups.com
用 :make 是可以的,但是需要写 Makefile 。
在写简单的单个小代码文件时,我想快速编译,而无需写 Makefile 。

我看了 :h make 的帮助信息,但是没有示例,不知道您说的是否实现这个要求,方便的话请给点示例。

--
闲耘™ (@hotoo, xianyun.org)



2009/10/18 Yongwei Wu <wuyo...@gmail.com>
你可以让快捷键设置'makeprg',然后调用:make。帮助文件里看,你要的都能做得到。

Yongwei Wu

unread,
Oct 18, 2009, 4:19:10 PM10/18/09
to vim...@googlegroups.com
看 :help 'makeprg'

2009/10/18 闲耘 <hoto...@gmail.com>:


> 用 :make 是可以的,但是需要写 Makefile 。
> 在写简单的单个小代码文件时,我想快速编译,而无需写 Makefile 。
>
> 我看了 :h make 的帮助信息,但是没有示例,不知道您说的是否实现这个要求,方便的话请给点示例。
>
> --

> 闲耘(tm) (@hotoo, xianyun.org)


>
>
>
> 2009/10/18 Yongwei Wu <wuyo...@gmail.com>
>>
>> 你可以让快捷键设置'makeprg',然后调用:make。帮助文件里看,你要的都能做得到。
>>

>> 2009/10/18 闲耘 <hoto...@gmail.com>:

闲耘(tm)

unread,
Oct 19, 2009, 3:08:20 AM10/19/09
to vim...@googlegroups.com

闲耘(tm)

unread,
Oct 19, 2009, 1:29:38 PM10/19/09
to vim...@googlegroups.com
回家测试,最后得出的代码如下:

autocmd FileType cpp nmap <F10> :w<cr>:exe ":set makeprg=g++\\\ -o\\\ ".expand("%:r").".exe\\\ ".expand("%")<cr>:make<cr><cr>:cw<cr>
autocmd FileType c nmap <F10> :w<cr>:exe ":set makeprg=gcc\\\ -o\\\ ".expand("%:r").".exe\\\ ".expand("%")<cr>:make<cr><cr>:cw<cr>
autocmd FileType cpp,c nmap <F5> :exe "!".expand("%:r").".exe"<Left>

执行命令最后的<Left>是为了方便增加参数,如果不需要参数,直接回车即可;
没有捕获执行程序的输出结果,是为了方便程序中可能需要的键盘输入;
如果你的程序很少需要参数输入,而且非常讨厌程序执行后返回vim还需要再按一次回车,可以这样:

autocmd FileType cpp,c nmap <F5> :exe "!".expand("%:r").".exe"<cr><cr>

<F5>执行程序,退出程序回到 vim 时,直接进入 normal 模式。

--
闲耘™ (@hotoo, xianyun.org)

Yongwei Wu

unread,
Oct 20, 2009, 1:55:10 PM10/20/09
to vim...@googlegroups.com
最好使用setlocal,不影响其它文件。

2009/10/19 闲耘 <hoto...@gmail.com>


>
> 回家测试,最后得出的代码如下:
>
> autocmd FileType cpp nmap <F10> :w<cr>:exe ":set makeprg=g++\\\ -o\\\ ".expand("%:r").".exe\\\ ".expand("%")<cr>:make<cr><cr>:cw<cr>
> autocmd FileType c nmap <F10> :w<cr>:exe ":set makeprg=gcc\\\ -o\\\ ".expand("%:r").".exe\\\ ".expand("%")<cr>:make<cr><cr>:cw<cr>
> autocmd FileType cpp,c nmap <F5> :exe "!".expand("%:r").".exe"<Left>
>
> 执行命令最后的<Left>是为了方便增加参数,如果不需要参数,直接回车即可;
> 没有捕获执行程序的输出结果,是为了方便程序中可能需要的键盘输入;
> 如果你的程序很少需要参数输入,而且非常讨厌程序执行后返回vim还需要再按一次回车,可以这样:
>
> autocmd FileType cpp,c nmap <F5> :exe "!".expand("%:r").".exe"<cr><cr>
>
> <F5>执行程序,退出程序回到 vim 时,直接进入 normal 模式。
>
> --

> 闲耘(tm) (@hotoo, xianyun.org)
>
>
>
> 2009/10/19 闲耘 <hoto...@gmail.com>

>> 闲耘(tm) (@hotoo, xianyun.org)


>>
>>
>>
>> 2009/10/19 Yongwei Wu <wuyo...@gmail.com>
>>>
>>> 看 :help 'makeprg'
>>>

>>> 2009/10/18 闲耘 <hoto...@gmail.com>:


>>> > 用 :make 是可以的,但是需要写 Makefile 。
>>> > 在写简单的单个小代码文件时,我想快速编译,而无需写 Makefile 。
>>> >
>>> > 我看了 :h make 的帮助信息,但是没有示例,不知道您说的是否实现这个要求,方便的话请给点示例。
>>> >
>>> > --
>>> > 闲耘(tm) (@hotoo, xianyun.org)
>>> >
>>> >
>>> >
>>> > 2009/10/18 Yongwei Wu <wuyo...@gmail.com>
>>> >>
>>> >> 你可以让快捷键设置'makeprg',然后调用:make。帮助文件里看,你要的都能做得到。
>>> >>

>>> >> 2009/10/18 闲耘 <hoto...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages