c语言时vim该怎样配置才最好用

Python017

c语言时vim该怎样配置才最好用,第1张

~/.vimrc里添加一下内容

set autoindent

set cindent

set modeline

set ruler

set showcmd

set showfulltag

set showmode

set smartcase

set smartindent

set imcmdline

set previewwindow

set hlsearch

set number

set ts=4

syntax on

直接用vim进行代码编辑就可以了。

然后使用gcc编译器进行编译。

"------------------------------------------------------------------------------

" <编译、连接、运行配置 >

"------------------------------------------------------------------------------

" F9 一键保存、编译、连接存并运行

map <F9>:call Run()<CR>

imap <F9><ESC>:call Run()<CR>

" Ctrl + F9 一键保存并编译

map <c-F9>:call Compile()<CR>

imap <c-F9><ESC>:call Compile()<CR>

" Ctrl + F10 一键保存并连接

map <c-F10>:call Link()<CR>

imap <c-F10><ESC>:call Link()<CR>

let s:LastShellReturn_C = 0

let s:LastShellReturn_L = 0

let s:ShowWarning = 1

let s:Obj_Extension = '.o'

let s:Exe_Extension = '.exe'

let s:Sou_Error = 0

let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'

let s:linux_CFlags = 'gcc\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'

let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'

let s:linux_CPPFlags = 'g++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'

func! Compile()

exe ":ccl"

exe ":update"

if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"

let s:Sou_Error = 0

let s:LastShellReturn_C = 0

let Sou = expand("%:p")

let Obj = expand("%:p:r").s:Obj_Extension

let Obj_Name = expand("%:p:t:r").s:Obj_Extension

let v:statusmsg = ''

if !filereadable(Obj) || (filereadable(Obj) &&(getftime(Obj) <getftime(Sou)))

redraw!

if expand("%:e") == "c"

if g:iswindows

exe ":setlocal makeprg=".s:windows_CFlags

else

exe ":setlocal makeprg=".s:linux_CFlags

endif

echohl WarningMsg | echo " compiling..."

silent make

elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"

if g:iswindows

exe ":setlocal makeprg=".s:windows_CPPFlags

else

exe ":setlocal makeprg=".s:linux_CPPFlags

endif

echohl WarningMsg | echo " compiling..."

silent make

endif

redraw!

if v:shell_error != 0

let s:LastShellReturn_C = v:shell_error

endif

if g:iswindows

if s:LastShellReturn_C != 0

exe ":bo cope"

echohl WarningMsg | echo " compilation failed"

else

if s:ShowWarning

exe ":bo cw"

endif

echohl WarningMsg | echo " compilation successful"

endif

else

if empty(v:statusmsg)

echohl WarningMsg | echo " compilation successful"

else

exe ":bo cope"

endif

endif

else

echohl WarningMsg | echo ""Obj_Name"is up to date"

endif

else

let s:Sou_Error = 1

echohl WarningMsg | echo " please choose the correct source file"

endif

exe ":setlocal makeprg=make"

endfunc

func! Link()

call Compile()

if s:Sou_Error || s:LastShellReturn_C != 0

return

endif

let s:LastShellReturn_L = 0

let Sou = expand("%:p")

let Obj = expand("%:p:r").s:Obj_Extension

if g:iswindows

let Exe = expand("%:p:r").s:Exe_Extension

let Exe_Name = expand("%:p:t:r").s:Exe_Extension

else

let Exe = expand("%:p:r")

let Exe_Name = expand("%:p:t:r")

endif

let v:statusmsg = ''

if filereadable(Obj) &&(getftime(Obj) >= getftime(Sou))

redraw!

if !executable(Exe) || (executable(Exe) &&getftime(Exe) <getftime(Obj))

if expand("%:e") == "c"

setlocal makeprg=gcc\ -o\ %<\ %<.o

echohl WarningMsg | echo " linking..."

silent make

elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"

setlocal makeprg=g++\ -o\ %<\ %<.o

echohl WarningMsg | echo " linking..."

silent make

endif

redraw!

if v:shell_error != 0

let s:LastShellReturn_L = v:shell_error

endif

if g:iswindows

if s:LastShellReturn_L != 0

exe ":bo cope"

echohl WarningMsg | echo " linking failed"

else

if s:ShowWarning

exe ":bo cw"

endif

echohl WarningMsg | echo " linking successful"

endif

else

if empty(v:statusmsg)

echohl WarningMsg | echo " linking successful"

else

exe ":bo cope"

endif

endif

else

echohl WarningMsg | echo ""Exe_Name"is up to date"

endif

endif

setlocal makeprg=make

endfunc

func! Run()

let s:ShowWarning = 0

call Link()

let s:ShowWarning = 1

if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0

return

endif

let Sou = expand("%:p")

let Obj = expand("%:p:r").s:Obj_Extension

if g:iswindows

let Exe = expand("%:p:r").s:Exe_Extension

else

let Exe = expand("%:p:r")

endif

if executable(Exe) &&getftime(Exe) >= getftime(Obj) &&getftime(Obj) >= getftime(Sou)

redraw!

echohl WarningMsg | echo " running..."

if g:iswindows

exe ":!%<.exe"

else

if g:isGUI

exe ":!gnome-terminal -e ./%<"

else

exe ":!./%<"

endif

endif

redraw!

echohl WarningMsg | echo " running finish"

endif

endfunc

怎么用有注释,直接放到你vimrc文件的最后就可以