VIM利用KeilC工具编译源代码

map :call Complite()
function Complite()
   
  if filereadable("Complier.cmd")
       execute '!Complier.cmd'
  else 
       let cscope_file=findfile("cscope.out", ".;") 
       let cscope_pre=matchstr(cscope_file, ".*/") 
       if !empty(cscope_file) && filereadable(cscope_file) 
       execute '!Complier.cmd'
    endif      
   endif
  " execute '!set C51INC =' . KeilPath . '\INC'
  " execute '!set C51LIB =' . KeilPath . '\LIB'
endfunction

map :call Test()
function Test()
"execute '!dir ' . shellescape(expand(''), 1)
":set suffixesadd=.c
echo expand("#<:t")
"findfile("main.c",".")
":echo "this is test"
endfunction
nmap fi :!start C:\Program Files\Mozilla Firefox\firefox.exe
nmap stc :!start C:\Users\Administrator\Desktop\STC\stc-isp-15xx-v6.85O\stc-isp-15xx-v6.85O.exe
set helplang=cn
map :call Compiler()
function Compiler()
       :call ConvObj("C51.exe","\*.c")
       :call LINK("BL51.exe","\*.OBJ")
       :call Hex()
endfunction   

function ConvObj(cmd,file)
    let l:CurDirFiles =substitute(globpath(".",a:file),'.\\','','g')
    let b:StrLen = strlen(l:CurDirFiles)
    let b:ii =0
    "expend(l:CurDirFiles)
    if l:CurDirFiles !="" && l:CurDirFiles !~ '\n$'
    let l:CurDirFiles =l:CurDirFiles."\n"
    endif
    silent execute '!echo Compile Start--  >Compiler.txt'
    if l:CurDirFiles !=""
    while b:ii < b:StrLen 
        let l:Pos = match(l:CurDirFiles,'\n',0)
        let l:SingleFile= substitute(strpart( l:CurDirFiles,0,l:Pos),'\s\+$','','')
         if l:SingleFile != ''  
             let l:CurDirFiles =strpart(l:CurDirFiles,l:Pos+1)
        "put='^^^^^^^^^^^^^'
             "put=l:SingleFile
         "put='++++++++++++'
         "put=l:CurDirFiles
         "put='----------'
      " let swstr= "Compiler ".l:SingleFile." ".expand(l:SingleFile,"%:t:r")."obj"
         silent execute '!echo '.l:SingleFile.'.... >> Compiler.txt'
         silent execute '!'.a:cmd.' '.l:SingleFile.'>> Compiler.txt'
       let  b:ii  +=l:Pos
           let  b:ii  +=1
       else
            let l:CurDirFiles =strpart(l:CurDirFiles,1)
                let  b:ii  +=1
       endif
    endwhile
   endif
endfunction

function LINK(cmd,file)
    let l:CurDirFiles =substitute(globpath(".",a:file),'.\\','','g')
    let l:CurDirFiles= substitute(l:CurDirFiles ,'\s\+$',' ','g')
    let l:CurDirFiles= substitute(l:CurDirFiles ,'\n',',','g')
    "put=l:CurDirFiles
    silent execute '!'.a:cmd.' '.l:CurDirFiles.' TO target.out RAMSIZE^(256^)'.'>> Compiler.txt' 
    silent execute '!echo '.strftime('%c').' >> Compiler.txt'
    :vi  Compiler.txt
    :%s/.*COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009.*//g
    :%s/.*C51 COMPILER V8.18 - SN: D1RMC-XVZPMC.*//g
    :%s/^\n//g
    :w
endfunction

function Hex()
    silent execute '!OH51.exe target.out'
endfunction

map :call Mycsadd()

function Mycsadd()
    silent execute '!cscope -Rb '.expand("%:p:h").'/*'
    silent execute 'normal cs add cscope.out'
endfunction

map :!ctags -R –c++-kinds=+p –fields=+iaS –extra=+q .
set nobackup

set noswapfile



你可能感兴趣的:(VIM利用KeilC工具编译源代码)