VIM PYTHON 调试

2023-01-31 01:01:33 python vim 调试

 

  1. python << EOF  
  2. import time  
  3. import vim  
  4. def SetBreakpoint():  
  5.     nLine = int( vim.eval( 'line(".")'))  
  6.     strLine = vim.current.line  
  7.     i = 0 
  8.     strWhite = ""  
  9.     while strLine[i] == ' ' or strLine[i] == "\t":  
  10.         i += 1 
  11.         strWhite += strLine[i]  
  12.     vim.current.buffer.append(  
  13.        "%(space)spdb.set_trace() %(mark)s Breakpoint %(mark)s" %  
  14.          {'space':strWhite, 'mark': '#' * 30}, nLine - 1)  
  15.     for strLine in vim.current.buffer:  
  16.         if strLine == "import pdb":  
  17.             break 
  18.         else:  
  19.             vim.current.buffer.append( 'import pdb', 0)  
  20.             vim.command( 'nORMal j1')  
  21.             break 
  22. vim.command( 'map <C-M> :py SetBreakpoint()<cr>')  
  23.    
  24. def RemoveBreakpoints():  
  25.     nCurrentLine = int( vim.eval( 'line(".")'))  
  26.     nLines = []  
  27.     nLine = 1 
  28.     for strLine in vim.current.buffer:  
  29.         if strLine == 'import pdb' or strLine.lstrip()[:15] == 'pdb.set_trace()':  
  30.             nLines.append( nLine)  
  31.         nLine += 1 
  32.     nLines.reverse()  
  33.     for nLine in nLines:  
  34.         vim.command( 'normal %dG' % nLine)  
  35.         vim.command( 'normal dd')  
  36.         if nLine < nCurrentLine:  
  37.             nCurrentLine -= 1 
  38.     vim.command( 'normal %dG' % nCurrentLine)  
  39. vim.command( 'map <C-U> :py RemoveBreakpoints()<cr>')  
  40. vim.command( 'map <C-D> :!Python %<cr>')  
  41. EOF  
  42.  

 

相关文章