【Vim使用】6.quickfix使用及一键编译

来源:互联网 发布:网店管家云端版mac 编辑:程序博客网 时间:2024/05/10 21:47

       在程序的开发过程中,很重要的一个循环是:编辑-编译-编辑,vim中的quickfix功能就是为了提高这一循环的效率。quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极大地提高编译错误的修改效率。

在vim中除了文本编辑功能外,还可以直接地调用外部的编译器完成程序的编译工作,实现这一功能,只要简单地使用vim命令:   

:make
而make命令执行的程序为vim变量makeprg的值,默认makeprg=make,使用Makefile机制进行项目的编译、管理。可以通过set makeprg=xxx的命令修改makeprg的值,从而使make命令执行不同的编译。例如:

:set makegrg=gcc\ -Wall\ -ohello\ hello.c 
上面的命令会把hello.c编译为名hello的可执行文件,并打开了所有的Warnning。如果编译命令中有空格,需要使用'\'对空格进行转义,上面的例子就使用了'\'转义空格-----

详细说明可以 help makeprg ,然后执行

:make

推荐使用Makefile的方式进行项目的编译、管理,可以实现项目的自动化管理、有利于提高效率。---------------前提是你会编写Makefile好,

通过make命令完成程序的编译工作后,会得到编译结果,一般会有一些编译错误,此时的工作就是对照错误提示修改源文件,然后重新编译。quickfix功能使我们可以直接跳到文件中的错误位置,直接进行修改,并通过使用quickfix的命令完成错误列表的跳转。查看在线帮助,通过命令:

:cc------------详细错误

:cn------------下一错误

:cp------------上一错误

:copen【高度】--打开quickfix错误列表 默认10行

:cclose -------关闭

:cw-------------显示错误列表

为了提高效率可以设置映射 ,完全根据个人喜好:

 "quickfix settingnmap <F4> :cn<cr> nmap <F5> :cp<cr>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------如果只是单一文件,可以通过调用函数,完成一键编译 ,这样子会更快一些!函数如下
"F7一键编译程序nmap <F7> :call DoOneFileMake()<CR>function DoOneFileMake()if(expand("%:p:h")!=getcwd())      echohl WarningMsg | echo "Fail to make! This file is not in the current dir! Press redirect to the dir of this file."endif exec "w" call SetCompilation() exec "make" exec "copen"endfunctionfunction SetCompilation()    if &filetype=='c'    set makeprg=gcc\ %\ -o\ %<    elseif &filetype=='cpp'        set makeprg=g++ \ %\ -o\ %<根据不同    endifendfunction 
第1行:表示映射快捷键F7,即按F7则调用这个一键编译的函数.
第3-5行:判断这个文件是否在当前文件夹.
第7行:相当于执行命令w
第8行:调用函数SetCompilation(),用来设置编译器或者说设定编译命令.
第9行:
执行make命令
第10行:打开quickfix窗口,用于显示编译产生的错误.
第13-19行:根据不同的文件类型,来配置makeprg,也就是make命令调用的编译器或编译命令.
第14行:判断当前的文件类型是否是C 程序.
第15行:设定make命令所调用的编译命令.
说明:这样来设定的好处就是编译产生的错误可以直接在\quickfix窗口中显示出来.
第16-17行,分析同14-15行.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

参考点击打开链接



0 0
原创粉丝点击