Windows下,VIM调试python的设置

作者在 2010-08-26 14:02:56 发布以下内容

现在Ctrl+M插入set_trace,Ctrl+U消除所有set_trace,Ctrl+D运行。觉得快捷键不爽的自己改改。
(M=>Mark, U=>Unmark, D=>Do)

总共四个步骤:

1. 安装python新版,http://www.python.org,并把python安装目录加入到系统路径

2. 安装VIM的runscript插件:其作用是在vim脚本中执行python脚本

3. 下载python2.4版本的python24.dll,放到c:\windows\system32目录。(注意,如果你的vim用的不是这个版本,后面的步骤中vim会出错,提示你没有pythonxx.dll,自己去找相应的版本下载),这个主要配合vim使用,也就是解释下面那一步的脚本的,和你调试的时候所用的python版本没有关系。

4. 把下面这段加入到_vimrc文件里面:

python << EOF
import time
import vim
def SetBreakpoint():
    nLine = int( vim.eval( 'line(".")'))
    strLine = vim.current.line
    i = 0
    strWhite = ""
    while strLine[i] == ' ' or strLine[i] == "\t":
        i += 1
        strWhite += strLine[i]
    vim.current.buffer.append(
       "%(space)spdb.set_trace() %(mark)s Breakpoint %(mark)s" %
         {'space':strWhite, 'mark': '#' * 30}, nLine - 1)
    for strLine in vim.current.buffer:
        if strLine == "import pdb":
            break
        else:
            vim.current.buffer.append( 'import pdb', 0)
            vim.command( 'normal j1')
            break
vim.command( 'map <C-M> :py SetBreakpoint()<cr>')

def RemoveBreakpoints():
    nCurrentLine = int( vim.eval( 'line(".")'))
    nLines = []
    nLine = 1
    for strLine in vim.current.buffer:
        if strLine == 'import pdb' or strLine.lstrip()[:15] == 'pdb.set_trace()':
            nLines.append( nLine)
        nLine += 1
    nLines.reverse()
    for nLine in nLines:
        vim.command( 'normal %dG' % nLine)
        vim.command( 'normal dd')
        if nLine < nCurrentLine:
            nCurrentLine -= 1
    vim.command( 'normal %dG' % nCurrentLine)
vim.command( 'map <C-U> :py RemoveBreakpoints()<cr>')
vim.command( 'map <C-D> :!python %<cr>')
EOF
 
转自 http://boush.blog.sohu.com/144993199.html
Vim | 阅读 3985 次
文章评论,共1条
变幻小子
2011-03-18 15:29
1
看看
游客请输入验证码
浏览2781241次
文章归档