vim 一键编译单个源文件

本文介绍如何在Vim中配置单文件编译功能,支持C、C++及C#等语言。通过简单的快捷键操作即可完成编译并直接跳转到错误行,适用于Windows和Linux平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:本文转载自www.vimer.cn
具体功能如下:
1.按F5编译单个文件,支持C,C++,C#,也可以支持java。
2.获取编译器错误描述,在错误描述上回车,可以直接跳转到错误行。
先贴上代码,可以看出,我把C#相关的注释掉了,实际上C#也是支持的,有需要的朋友可以去掉注释,还是可以编译C#的。

 


  
" 单个文件编译
map <F5> :call Do_OneFileMake()<CR>
function Do_OneFileMake()
if expand(
" % :p:h " )!=getcwd()
echohl WarningMsg | echo
" Fail to make! This file is not in the current dir ! Press < F7 > to redirect to the dir of this file . " | echohl None
return
endif
let sourcefileename=expand(
" % :t " )
if (sourcefileename==
"" || (&filetype!= " cpp " && &filetype!= " c " ))
echohl WarningMsg | echo
" Fail to make! Please select the right file! " | echohl None
return
endif
let deletedspacefilename=substitute(sourcefileename,' ','','g')
if strlen(deletedspacefilename)!=strlen(sourcefileename)
echohl WarningMsg | echo
" Fail to make! Please delete the spaces in the filename! " | echohl None
return
endif
if &filetype==
" c "
if g:iswindows==1
set makeprg=gcc\ -o\ %<.exe\ %
else
set makeprg=gcc\ -o\ %<\ %
endif
elseif &filetype==
" cpp "
if g:iswindows==1
set makeprg=g++\ -o\ %<.exe\ %
else
set makeprg=g++\ -o\ %<\ %
endif
" elseif &filetype == " cs "
" set makeprg=csc\ \/nologo\ \/out:%<.exe\ %
endif
if(g:iswindows==1)
let outfilename=substitute(sourcefileename,'\(\.[^.]*\)
,'.exe','g')
let toexename=outfilename
else
let outfilename=substitute(sourcefileename,'\(\.[^.]*\)
,'','g')
let toexename=outfilename
endif
if filereadable(outfilename)
if(g:iswindows==1)
let outdeletedsuccess=delete(getcwd().
" \\ " .outfilename)
else
let outdeletedsuccess=delete(
" ./ " .outfilename)
endif
if(outdeletedsuccess!=0)
set makeprg=make
echohl WarningMsg | echo
" Fail to make! I cannot delete the " .outfilename | echohl None
return
endif
endif
execute
" silent make "
set makeprg=make
execute
" normal : "
if filereadable(outfilename)
if(g:iswindows==1)
execute
" ! " .toexename
else
execute
" ! ./ " .toexename
endif
endif
execute
" copen "
endfunction
" 进行make的设置
map
< F6 > :call Do_make ()< CR >
map
< c-F6 > :silent make clean < CR >
function Do_make
()
set makeprg = make
execute
" silent make "
execute
" copen "
endfunction

主要介绍如下几点:
1.如果是windows用户,需要安装mingw,并且将他的bin目录添加到对应的环境变量里。
2.g:iswindows 是个我定义的全局变量,用来判断系统是linux还是windows,这样就不用写两套vimrc了,实现如下:

3.makeprg 是vim内置的编译命令,可以通过更改来实现编译对应类型文件。具体可参考vim官方说明文件。
4.最后的copen是打开quickfix,在错误描述上回车,可以直接跳转到错误行。


  
if ( has ( " win32 " ) || has ( " win95 " ) || has ( " win64 " ) || has ( " win16 " ))
let g
:iswindows = 1
else
let g
:iswindows = 0
endif



转载于:https://www.cnblogs.com/zourrou/archive/2011/04/07/2007368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值