ipdb 在 shell 中工作正常,但我想在 vim 下调试,在我设置之后ipdb.set_trace()
,然后!python %
,下面的控制台给了我这个凌乱的提示,你知道吗?
4 回答
我猜你正在使用 GUI Vim。虚拟机?麦克维姆?您在执行外部工具时获得的伪终端不是,从来没有并且可能永远无法理解您看到的转义字符。这意味着没有颜色和ncurses 样式的小部件。
您最好在单独的终端中运行它,或者找到一种在 iPython 中禁用颜色的方法。
如果您真的不想像@romainl 建议的那样修补 vim 以及在单独的终端中运行,那么有一个Conque插件,它提供了一种在 vim 缓冲区中具有彩色伪终端的方法。你必须跑
ConqueTerm(|[V]Split|Tab) sh
并在其中运行
python path/to/file.py
(%
不可能)虽然。它可以缩小到一个映射:
nnoremap <expr> ,p ":\<C-u>ConqueTermVSplit sh\n\<C-o>:call feedkeys('python '.shellescape(bufname(".bufnr("%").")).\"\\n\")\n"
对于 Windows 用户,我建议使用ConEmu。与 ipdb 完美配合(突出显示,自动完成,...)
我为此创建了自己的解决方法,这可能对您很有价值,具体取决于您使用 ipdb 的方式。这个想法是你可以传入no_colors=True
,set_trace()
这样交互式调试器就不会产生任何颜色输出。我也为launch_ipdb_on_exception
.
这意味着您可以执行以下操作:
import ipdb
ipdb.set_trace(no_colors=True)
并且输出在 MacVim 中看起来不错。
要使用它,您必须使用我的版本ipdb
,即此处,如果您想查看我所做的实际相关提交,请在此处。
事实证明,这ipdb
只是一种方便的访问方式ipython.core.debugger
,Pdb
实际的调试器是在那里定义的。