|
作者:半瓶墨水 链接:http://www.2maomao.com/blog/win32-vim-debug-python/ vim很好用,但是python的set_trace太难用了,参考这篇文章,自己搞了一下。
现在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 << EOFimport timeimport vimdef SetBreakpoint():nLine = int( vim.eval( 'line(".")'))strLine = vim.current.linei = 0strWhite = ""while strLine == ' ' or strLine == "\t":i += 1strWhite += strLinevim.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":breakelse:vim.current.buffer.append( 'import pdb', 0)vim.command( 'normal j1')breakvim.command( 'map <C-M> :py SetBreakpoint()<cr>')def RemoveBreakpoints():nCurrentLine = int( vim.eval( 'line(".")'))nLines = []nLine = 1for strLine in vim.current.buffer:if strLine == 'import pdb' or strLine.lstrip()[:15] == 'pdb.set_trace()':nLines.append( nLine)nLine += 1nLines.reverse()for nLine in nLines:vim.command( 'normal %dG' % nLine)vim.command( 'normal dd')if nLine < nCurrentLine:nCurrentLine -= 1vim.command( 'normal %dG' % nCurrentLine)vim.command( 'map <C-U> :py RemoveBreakpoints()<cr>')vim.command( 'map <C-D> :!python %<cr>')EOF 转自:http://www.2maomao.com/blog/win32-vim-debug-python/ |
|
|