如何在Emacs中使用Python
我刚开始接触emacs,想用它来开发Python程序。我现在用的是Ubuntu 9.10,搞得我很沮丧,因为emacs和Python不太好搭配。我用的是GNU Emacs 23.1.50.1(x86_64-pc-linux-gnu,GTK+版本2.18.0)。
这是我做的事情:
emacs自带Python模式,但让我困惑的是有两种模式,一种是python-mode.el,另一种是python.el。我用的是emacs 23,所以我想我用的是python.el。我需要python-mode吗?当我按下M-Tab时,代码补全不工作,反而是窗口管理器在起作用。我试过Esc-Tab,但它显示“没有匹配项”。我该如何启用代码补全呢?
之后我安装了ropemacs。
sudo aptitude install python-ropemacs
然后我在~/.emacs目录下创建了一个.emacs文件,并在里面添加了以下内容:
(require 'pymacs)
(pymacs-load "ropemacs" "rope-")
(setq ropemacs-enable-autoimport t)
接着,当我按M-/(Alt-/)时,它没有反应;而当我从菜单中点击Rope->Code assist时,它打开了一个文件对话框让我选择根项目文件夹。我选择了当前文件夹,里面有一些Python代码。当我再次从菜单尝试Code assist时,它显示“Completion for x: ”,但结果是空的。我该如何让emacs的Python代码补全工作呢?
然后我下载了anything.el、anything-config和anything-match-plugin到~/.emacs.d文件夹。接着我在.emacs文件中添加了以下几行:
(require 'anything-config)
(require 'anything-match-plugin)
(global-set-key "\C-ca" 'anything)
(global-set-key "\C-ce" 'anything-for-files)
结果你猜怎么着,它还是不工作。我再次尝试“M-x anything”,结果显示没有匹配项。(我猜也许C-ca(先按Control-a再按e)组合可以工作,但它说没有定义)。你能给像我这样的小白解释一下Python的代码补全吗?最好一步一步来。谢谢。
编辑:我通过链接让emacs和Python工作了。感谢所有人的回答。
4 个回答
我不太确定你是否需要做什么特别的设置才能让Python开发正常工作。在gNewSense deltah(一个基于Ubuntu 8.04的版本)上,我只做了一件事,就是编辑一个.py文件,文件的第一行是:
#!/usr/bin/python
然后Emacs就能自动识别,给你提供Python模式的选项。我不需要安装除了Emacs以外的其他东西。
不过,这可能对你没什么帮助,因为gNewSense默认已经预装了Emacs。我得在我普通的Ubuntu安装上试试。
我觉得你确实需要安装这个包python-mode
!因为roemacs的变种主要是用来重构代码的,而pymacs则是让Python可以作为Emacs的扩展语言——这两者都不是你需要的标准支持。
我还没有尝试过其他方法,而且在使用rope的时候运气也不太好(因为巨大的源代码树导致我的emacs在保存文件时会卡住)。所以,我发现默认的自动补全功能对我来说已经足够用了。
默认的补全快捷键是 M-/
。这个操作会运行一个叫做dabbrev-expand的功能,它会把当前的单词扩展成“最近的、以这个单词为前缀的单词”。虽然这个功能不是完美的:它无法解析类型,也不会搜索导入的内容,但在90%的情况下,它都能正常工作。
(你需要先关闭rope功能。)