Vim 调试脚本

Vimrc 中

" Debug
map <F5> :call DebugRun()<cr>
imap <F5> <Esc>:call DebugRun()<cr>

C:\Program Files\Vim\vimfiles\plugin\DebugRun.vim

"
" debug c
" 原来本想编译 c/c++ ,后来又加入了 html
"
if exists("loaded_DebugRun")
    finish
endif
let loaded_DebugRun = 1

function DebugRun()
python <<EOF

import vim
import os

vim.command(':w')
filename = vim.current.buffer.name
[filebasename , fileext] = os.path.splitext( os.path.basename(filename) )

defun = lambda cmd:vim.command('!'+cmd+' '+filebasename+fileext)

if fileext == '.cpp' or fileext == '.c' :
    '''
    import time
    import stat
    if ( not os.path.exists(filebasename+'.exe') ) or ( os.path.getmtime( filebasename+'.exe' ) < os.path.getmtime( filebasename+fileext ) ) :
        vim.command(':call CompileC()')
    '''
    if os.path.exists( filebasename+'.exe' ):
        vim.command('!'+filebasename+'.exe')
    else :
        print 'Complie first , <F7> .'

elif fileext == '.html' or fileext == '.htm' :
    import webbrowser
    webbrowser.open_new_tab(filename)

elif fileext == '.java' :
    sym = 'applet'
    if sym in '\n'.join( vim.current.buffer[0:3] ) :
        if os.path.exists( filebasename+'.html' ):
            vim.command('!appletviewer %s' % (filebasename+'.html') )
        else :
            print 'Complie first , <F7> .'
    elif os.path.exists(filebasename+'.class') :
        vim.command( '!java %s' % filebasename )

elif fileext == '.php' :
    defun('php')

elif fileext == '.py' :
    defun('python')

elif fileext == '.rb' :
    defun('ruby')

elif fileext == '.scm' :
    defun('mzscheme -r')

EOF
endfunction

"command! Compilec call CompileC()
" nmap <silent> <Leader>tt :call AutoTpl()<CR>

" command! <leader>NN call VimPlayer()
"
"if !hasmapto('<Plug>VimPlayer')
"  nmap <silent><unique> <Leader>pp <Plug>VimPlayer
"endif
"nnoremap <unique><script> <Plug>VimPlayer:VimPlayer<CR>