python.el shell和执行缓冲区
我正在使用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 个回答
关于你的第一个问题:通常你可以通过按 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-code
和 python-shell-completion-string-code
。
引用:
符号补全:你可以补全光标所在位置的符号。它在后台使用命令行补全,所以你应该不时运行 python-shell-send-buffer
来获得更好的结果。
模板:提供了 6 个模板,方便你快速插入类、函数定义、循环、条件语句、异常处理和 while 循环。这些模板和 dabbrev 功能结合在一起。如果你开启了 dabbrev-mode
,并且 python-skeleton-autoinsert
设置为 t,那么每当你输入这些定义的名称并按下空格键,它们会自动展开。
对于我来说,imenu 条目可以在不添加钩子的情况下显示,只需在配置文件中加上 (require 'python)
。