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

       在程序的开发过程中,很重要的一个循环是:编辑-编译-编辑,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 setting
nmap <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"
endfunction
function SetCompilation()
    if &filetype=='c'
    set makeprg=gcc\ %\ -o\ %<
    elseif &filetype=='cpp'
        set makeprg=g++ \ %\ -o\ %<根据不同
    endif
endfunction 
第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行.

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

参考点击打开链接



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值