王垠有过一个VIM IDE的我介绍,很不错.我自己也做了一个IDE的设置,不得不说VIM是
十分强大的.
但是一个问题,我想有一个好的解决方法.那就是执行,与调试
我本来的方法是启动一个xterm在里面执行.但是这样多出了一个窗口,感觉很不方便.
调试也是,要再开一个窗口,不方便.
这两天我在看vim的插件的时候发现了一个好东西.
Conque shell[http://www.vim.org/scripts/script.php?script_id=2771]
我们都知道在vim里可以用:! 的方式执行一个shell 命令.但是来回切换是很不方便的
,同时一个显示的上的问题不是很好看.
这个插件的功能是一在buffer里执行一个shell.给人的感觉就是在终端里执行一个
shell,感觉很好.而且可以用vim的方式进行工作,让我有用gvim取代xterm的冲动(呵呵)
有了这个插件,我们就可以在一个窗口里进行软件的运行与调试了.呵呵
下面是我自己的一个小vim script.
F3进行编译.F5执行并在右边的窗口中输出.F6在右边的窗口里调试(gdb)
如果已经启动,但是你关闭了这个窗口,也会自动重新开启.
对了如果用的是zsh,那么显示的一个小问题可以用下面的设置解决.
在vimrc里加入
let g:ConqueTerm_TERM= 'vt220'
###############################
map <F3> :update<cr>:silent make<cr>:cw<cr><cr>
imap <F3> <esc>:update<cr>:silent make<cr>:cw<cr><cr>
"本函数的功能,启动ConqueTerm,清屏,并在右侧启动一个vsplite窗口.如果是已经启动过
"但是目前是hidden.就再次打开.
"back == 1则回到右边的窗口
function! ConqueTerm_run(shell,command,back)
if !exists('g:run_term')
let g:run_term=conque_term#open(a:shell,['belowright vsplit','vertical resize 40'],1)
endif
let buf_id=bufnr(g:run_term['buffer_name'])
if (bufwinnr(buf_id) == -1)
belowright 40vnew
exe "buffer ". buf_id
wincmd h
endif
call g:run_term.writeln('clear')
call g:run_term.writeln(a:command)
call g:run_term.read(100)
if a:back == 0
exe bufwinnr(buf_id).'wincmd w'
endif
endfunction
"map <F5> :!xterm -e "./a.out;sleep 10;"&<cr><cr>
"map <F6> :!gcc -g2 %<cr>:!xterm -e "gdb a.out"&<cr><cr>
map <F5> :call ConqueTerm_run('zsh','./a.out',1)<cr>
map <F6> :call ConqueTerm_run('zsh','gdb a.out',0)<cr>
"}}}