python.el shell和执行缓冲区

4 投票
1 回答
3437 浏览
提问于 2025-04-16 22:29

我正在使用fgallina的python.el,具体可以在这个链接找到。这个工具有很多功能,但我不知道怎么用。

编辑:我发现这个模式是可以工作的,不过在发送信息时没有自动打开解释器。我该怎么把我当前的Python代码发送过去让它执行呢?我尝试使用C-c C-c,但没有任何输出。

关于Python shell的集成和命令补全,我需要在标准的加载路径和require语句之外再添加什么吗?

Imenu支持在我这儿也没有显示出来。编辑:我尝试把这个添加到我的emacs里,但没有成功。

add-hook 'python-mode-hook 'imenu-add-menubar-index)

我在ubuntu上使用emacs 23。

1 个回答

6

关于你的第一个问题:通常你可以通过按 C-c C-l 来加载一个缓冲区或文件。(我刚刚测试了 python.el,这个方法也适用)这会把文件发送到正在运行的 Python 进程,所以你需要打开 *Python* 缓冲区来查看结果。*Python* 缓冲区也是你平常用的 Python 解释器/命令行工具/交互式环境。C-M-x 是用来发送函数定义到解释进程的。想了解其他快捷键,可以按 M-x describe-bindings,然后在打开的 *Help* 窗口中查找 "python-"(在 "Major Mode Bindings" 下)。

如果你想了解更多关于自动补全的内容,可以查看 python.el 开头的文档:

引用:

命令行补全:按下 Tab 键会尝试补全当前的单词。命令行补全的实现方式是,如果你把 python-shell-interpreter 改成其他的(比如 IPython),那么集成其他补全方式应该很简单。你只需要指定你的自定义 python-shell-completion-setup-codepython-shell-completion-string-code

引用:

符号补全:你可以补全光标所在位置的符号。它在后台使用命令行补全,所以你应该不时运行 python-shell-send-buffer 来获得更好的结果。

模板:提供了 6 个模板,方便你快速插入类、函数定义、循环、条件语句、异常处理和 while 循环。这些模板和 dabbrev 功能结合在一起。如果你开启了 dabbrev-mode,并且 python-skeleton-autoinsert 设置为 t,那么每当你输入这些定义的名称并按下空格键,它们会自动展开。

对于我来说,imenu 条目可以在不添加钩子的情况下显示,只需在配置文件中加上 (require 'python)

撰写回答