Emacs python-mode:pdb逐步调试的键盘快捷键

6
我想知道是否有一种方法将以下操作与功能键F1-F12或其他键盘快捷键关联起来:
  • n RET(下一个)
  • p RET(上一个)
  • c RET(继续)
  • C-x SPC RET (设置/清除断点)
。这样做的想法是模拟其他IDE(如Visual Studio、MATLAB等)用于调试的键盘快捷键。 python-mode是否已经支持此功能?是否有任何Emacs模式可用于补充python-mode以进行调试?
1个回答

4
您可以在Emacs中定义自己的键绑定。首先输入C-h m来查看pdb缓冲区中模式的帮助信息(从M-x pdb开始)。
接下来,绑定任何键盘组合:
(require 'gud)                                                                                                                                                
(define-key gud-mode-map '[f11] 'gud-step)                                                                                                                    
(define-key gud-mode-map '[f10] 'gud-next)                                                                                                                    
(define-key gud-mode-map '[f5] 'gud-cont)                                                                                                                     
(define-key gud-mode-map '[f12] 'gud-break) 
阅读Emacs手册中关于调试器的内置接口(输入C-h i g (emacs) Debuggers RET),或者在线查看:

http://www.gnu.org/software/emacs/manual/html_node/emacs/Debuggers.html


你必须进入良好的调试会话,然后当你键入 C-h k ANY-KEY-SEQUENSE 时,你可以获得有关命令的帮助,并将其名称复制到 Elisp 脚本中... 对于 C-x SPC RET,你必须保持在 Python 文件缓冲区中... - gavenkoa
阅读有关 eval-after-load 的内容,请访问 http://www.gnu.org/software/emacs/manual/html_node/elisp/Hooks-for-Loading.html - gavenkoa
谢谢,但是我需要加载哪个.el文件才能让GUD工作呢?我以为GUD是由Emacs本身提供的。 - Amelio Vazquez-Reina
@intrpc 你说得没错,GUD是随Emacs一起提供的。但是Emacs自带了1400个“.el”文件,加载所有这些文件需要很长时间。因此只加载所需的一小部分。为了解决依赖关系,Emacs有requireload-library函数。如果你想使用my.el中的函数,你首先要写上**(require 'my)(require "my")(load-library "~/path/to/my.el")。请注意,load-path**变量也要考虑在内。 - gavenkoa
1
@intrpc 但最好的方法是键入 C-h k KBD-SEQUENCE。您将获得有关在键入KBD-SEQUENCE时Emacs调用的函数的帮助。在“帮助缓冲区”中,会显示指向定义此函数的源文件的链接。在您的情况下,似乎是 (require 'gud)。这种技巧总是有效的,但对于gud-next/gud-finish不适用,因为它们是通过defalias定义的。 - gavenkoa
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接