Vim和Pdb集成
项目描述
摘要
本软件包提供Python调试器 pdb 与VIM编辑器的集成。
用法
Python代码
使用 vimdb 很简单 - 只需在代码中插入对 set_trace 的调用,几乎和通常一样
import vimpdb; vimpdb.set_trace()
然后启动您的Python应用程序/脚本。
当Python解释器执行到该行时,vimpdb将启动一个VIM实例。VIM应该获得焦点;它将在正确的行加载源文件。
VIM命令
在VIM中,您现在可以使用以下命令
Ex命令 |
快捷键 |
详细信息 |
---|---|---|
:PDBNext |
n |
pdb(n)ext |
:PDBStep |
s |
pdb(s)tep |
:PDBArgs |
a |
pdb(a)rgs |
:PDBUp |
u |
pdb(u)p |
:PDBDown |
d |
pdb(d)own |
:PDBReturn |
r |
pdb(r)eturn |
:PDBContinue |
c |
pdb(c)ontinue |
:PDBBreak |
b |
在光标所在的行设置一个断点;类似于pdb b(reak) |
:PDBClear |
B |
清除光标所在的行上的断点;类似于pdb cl(ear) |
:PDBWord |
w |
评估光标所在标识符的值。 |
:PDBEval |
? |
在询问后评估Python表达式。 |
:PDBReset |
x |
切换回使用标准pdb的shell中的正常调试。 |
N/A |
v(im) |
切换回vimpdb;仅在纯pdb中。 |
标准 pdb 钩子
如果您发现很难改变习惯并继续输入
import pdb; pdb.set_trace()
您可以在家目录中的.pdbrc文件中添加以下行
import vimpdb; vimpdb.hookPdb()
这样,上述提到的v(im)命令就被添加到了您的标准pdb中,您可以在任何时候切换到vimpdb。
需求
vimpdb在Linux、Mac OSX和Windows下已成功使用。
它与Python 2.7、2.6、2.5和2.4兼容。它与Python 3.1(3.0也应如此)不兼容。
vimpdb需要一个同时支持python和clientserver选项的VIM安装。
通过在VIM提示符下发出以下命令来找出是否是这种情况
:version
如果支持选项,您将在输出中看到+clientserver和+python。相反,您将看到-clientserver或-python。
在Linux和Windows上,默认的VIM构建应该已经启用了服务器功能。
在Windows上,VIM中编译的python选项依赖于特定的Python版本。通过在VIM提示符下发出以下命令来找出该特定版本是否已安装并在VIM中工作
:python import sys; print sys.version
在Mac OSX上,您需要使用MacVIM。MacVIM默认也编译了python选项。
安装
使用easy_install进行标准安装
$ easy_install vimpdb
您显然也可以使用pip。
如果您查看包内部,您将看到一个VIM脚本文件:vimpdb.vim。请不要将其移动到VIM配置目录(如~/.vim/plugin)。vimpdb知道如何使脚本对VIM可用。
配置
简短故事
vimpdb试图避免依赖于任何用户配置。如果它无法自动检测正确的配置,它将询问一些问题,您应该能够轻松回答。
长篇故事
启动时,vimpdb会查找其RC文件:~/.vimpdbrc。如果找不到它,vimpdb会从默认值创建该文件。
vimpdb 尝试一组默认值,这些值应该能够工作。它会检查这些默认值是否合适。如果默认值不起作用,vimpdb 将交互式地询问其他值,直到确认提供的值确实有效。
以下是每个操作系统对应的默认值。
对于 Linux
vim_client_script = vim vim_server_script = gvim server_name = GVIM port = 6666
对于 MacOSX
vim_client_script = mvim vim_server_script = mvim server_name = VIM port = 6666
对于 Windows
vim_client_script = vim.exe vim_server_script = gvim.exe server_name = VIM port = 6666
下面详细说明了每个选项。
显然,您可以创建和调整该 RC 文件。不过,RC 文件应包含所有 4 个选项的值。如果其中一个选项缺失,vimpdb 将会中断并相应地报错。
VIM客户端脚本 - vim_client_script
为了与调试发生的 VIM 实例通信,vimpdb 需要启动另一个客户端模式的 VIM 实例。
vim_client_script 选项包含用于启动带有 clientserver 支持的 VIM 实例的脚本。
在 Windows 上,它应该包含 vim.exe,不要 使用 gvim.exe。此外,请不要在值中包含引号,以处理路径中的空格。
VIM服务器脚本 - vim_server_script
如果没有 VIM 实例正在运行,vimpdb 将以服务器模式启动一个 VIM 实例。
vim_server_script 选项包含用于启动带有 clientserver 支持的 VIM 实例的脚本。由于 VIM 实例中的调试是用 python 编写的,因此该实例必须支持 python。
在 MacOSX 和 Linux 上,vim_server_script 和 vim_client_script 可以具有相同的值。
在 Windows 上,只能使用图形 VIM 作为服务器,这是为什么上面有两个不同的默认值。
服务器名称 - server_name
服务器模式的 VIM 实例有一个名称。
默认情况下,vimpdb 使用名为 VIM 的服务器进行通信,这是 VIM 默认的 servername。
如果您想 vimpdb 使用另一个服务器名称,请修改 server_name 选项。它应该包含您想要用于调试的 VIM 服务器的名称。
您可以使用以下命令列出当前运行的 VIM 服务器:
$ vim --serverlist VIM
或者在 Mac 上
$ /Applications/MacVim.app/Contents/MacOS/Vim --serverlist VIM
当运行带有 clientserver 支持的 VIM 实例时,您可以在 VIM 提示符中输入以下命令来找到其实例名称:
:echo v:servername
UDP端口 - port
VIM 通过 UDP 套接字与 vimpdb 通信。默认情况下,套接字在端口 6666 上打开。
如果您的系统上没有可用的该套接字,您可以使用 port 选项指定一个可用的端口号。
已知问题
目前没有。
向后兼容性
在版本 0.4.1 之前,vimpdb RC 文件 (~/.vimpdbrc) 有一个单独的 script 选项。该选项已转换为 vim_client_script 选项。升级应该是透明的。
在版本 0.4.0 之前,vimpdb 通过环境变量进行配置。如果您已有工作配置,升级应该是透明的。环境变量 VIMPDB_SERVERNAME 和 VIMPDB_VIMSCRIPT 的值已在 RC 文件 (~/.vimpdbrc) 中设置。它们分别放置在 server_name 和 script 选项中。
修复的问题
见 变更日志
致谢
Godefroid Chapelle
Jean-Francois Roche
Stefan Eletzhofer
在查看 Stefan Eletzhofer 的 vimpdbhook 时开始重写 http://code.google.com/p/vimpdbhook/
从 Stefan Eletzhofer 的 vimpdb 0.2.1 中获取了一些代码
代码部分来自Yaron Budowski的 VimPdb.vim,可访问http://www.vim.org/scripts/script.php?script_id=2043
变更日志
0.4.5 (2011-04-28)
修复当前行的突出显示。
0.4.4 (2010-11-29)
测试清理:移除辅助类和函数。
代码清理:改进导入风格。
在c(ontinue)之后,按键映射又出错了(:-()。
0.4.3.2 (2010-11-27)
修复文档中的Linux默认值。
记录PDBxx命令。
减少VIM命令行的噪音。
改进当前行的突出显示。
0.4.3 (2010-11-26)
修复VIM服务器启动时服务器名称冲突的问题(如VIM和GVIM)。
修复VIM支持检测。
修复vimpdb缓冲区创建。
修复和调整Linux默认值。
0.4.2 (2010-11-26)
PDBEval(映射到?键)以请求评估Python表达式。
PDBClear(映射到B键)以清除先前设置的断点。
只有当VIM中已打开文件时才打开新标签页。
当continue(c)、reset(x)或退出(q)时关闭vimpdb缓冲区。
即使另一个服务器正在运行,也要启动VIM服务器。
0.4.1.2 (2010-11-26)
完善文档。
0.4.1.1 (2010-11-26)
调整文档。
0.4.1 (2010-11-26)
检查python和clientserver支持;如果支持缺失,则提供正确配置的机会。
尝试启动VIM服务器实例,如果尚未运行。
0.4.0 (2010-07-29)
在Python 2.7上进行了测试。
UDP端口现在是可选项。
通过~/.vimpdbrc进行配置,而不是环境变量。
0.3.8 (2010-06-17)
修复:某些版本的VIM需要显式导入vim模块,尽管大多数不需要。(http://github.com/gotcha/vimpdb/issues/issue/5)
0.3.7 (2010-05-20)
修复:从
切换到vimpdb后无法向下移动。(http://github.com/gotcha/vimpdb/issues/issue/4)
0.3.6 (2010-04-17)
修复:设置断点后,continue命令出错了。(http://github.com/gotcha/vimpdb/issues/issue/3)
修复:在执行< span class="docutils literal">continue命令后,按键映射仍然损坏。(http://github.com/gotcha/vimpdb/issues/issue/2)
0.3.5 (2010-03-22)
更好的文档,特别是Windows。
修复:Python 2.5和2.6的输出捕获出错了。
Windows兼容性(至少XP)
0.3.4 (2010-03-15)
关闭套接字,以便可以再次开始调试会话。
0.3.3 (2010-03-04)
避免在调试的缓冲区中留下映射。
0.3.2 (2010-03-03)
更多文档
0.3.1 (2010-03-02)
修复setup.py元数据,使其不包含非ASCII字符。这避免了实际发布到PyPI。
0.3 (2010-03-02)
完全重写。
0.2.1 (2008-06-27)
添加vimpdb脚本。
添加“退出”回调。
0.2 (2008-06-17)
首次发布到PyPI。
待办事项
按优先级排序
添加监视窗口。
突出显示断点
条件断点
在VIM关闭调试时将调试状态保存在VIM中,以便将vimpdb切换回pdb。
vimpdb缓冲区中的按键绑定。
启用按键绑定的自定义。
等等...
项目详情
vimpdb-0.4.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9f0ce70ef5de5a55b8cdce267f4069f02383721fd4e3211c3a498d4381a5f65 |
|
MD5 | 14c35b21b3ca8e01b1f832513a134f6f |
|
BLAKE2b-256 | f1e550339da15c3b5a3aa017521bc64005820c24dc7a61f450d63471ac934bd5 |