ropemacs 使用教程
网上有很多关于如何安装 ropemacs的教程,但我到现在还没找到任何关于安装后如何使用它的说明。我已经安装了,或者说看起来是安装好了,因为Emacs的顶部菜单栏里有“Rope”这个选项。那接下来该怎么办呢?目前我只能使用“显示文档”(默认是C-c d)。尝试使用代码助手(我猜是自动补全吧?)时,Emacs只是在小窗口里询问“Rope项目根文件夹”(这是什么?),然后什么也不显示。
所以,一旦安装了ropemacs,接下来该怎么做才能在一些简单的Python脚本上看到它的效果呢?比如说“如果你在Emacs里有这个脚本,把闪烁的方框放在这里,然后按这个,它就会做那个”这样的说明就很好。
(我考虑了很久要不要问这个问题,因为似乎没有其他人遇到同样的问题)
4 个回答
你可以通过 rope-open-project
来设置根文件夹。一旦设置好根项目,就会创建一个 .ropeproject
目录。
在这个目录里,有一个 config.py 文件,里面有一些钩子(hooks),可以让你在项目设置好后运行一些(python)代码。project_opened(project):
这个函数是运行代码的好地方。我通常会激活虚拟环境 imp.load_source('/path-to-env/activate_this.py')
,这样我就能获取虚拟环境中其他库的源代码覆盖情况。
我找到的最好的使用信息是在ropemacs的源代码里,有个说明文件,地址在这里:
首先,你需要选择你的项目根文件夹。简单来说,这就是你项目最上层的文件夹,或者如果你只是在处理一个文件,那就是当前的文件夹。一旦你选择了根文件夹,其他功能就可以正常使用,比如代码辅助、查看文档、跳转到其他符号等等。
为了充分利用ropemacs,我建议你下载autocomplete.el,把它放在~/.emacs.d文件夹里,然后在你的.emacs文件中添加以下内容:
(add-to-list 'load-path "~/.emacs.d/")
(add-to-list 'load-path "~/.emacs.d/auto-complete-1.2")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
(pymacs-load "ropemacs" "rope-")
(setq ropemacs-enable-autoimport t)
(require 'auto-complete)
(global-auto-complete-mode t)
这假设你把autocomplete安装在~/.emacs.d/auto-complete-1.2文件夹里。完成这个步骤后,当你输入一个单词或符号的几个字符时,自动补全功能就会自动出现。
你可以修改你的ROOT/.ropeproject/config.py文件,添加更多的目录到rope查找路径中,以便提供更好的自动补全功能。
文档:把光标放在一个符号上(比如函数名、类名等),然后执行:
C-c d
这样就会显示出这个符号的文档字符串。
跳转到定义:把光标放在一个符号上(比如函数名、类名等),然后执行:
C-c g
这会立即打开包含该符号的文件,并跳转到定义的开头。这在文档不多的时候特别有用,你可以直接查看实际的代码。而且,这对于在你自己的代码中导航也非常方便。
查找出现位置:
C-c f
在整个项目中智能搜索光标所在的符号。
代码辅助:
M-/
只需输入一个函数、类等的前几个字符,就会显示出可能的补全列表。需要注意的是,由于Python的特性,这个列表可能并不总是完整的。
重构:在Rope->Refactor下有很多选项。这些功能是用来更好地组织你的代码的。如何使用它们通常是自解释的;一般来说,选择你想重构的代码区域,然后选择相应的命令。
编辑:针对下面的评论,这里是如何将其他路径添加到你的Python路径中,以便自动补全也能查找这些符号。
prefs.add('python_path', '~/path/to/virtualenv/lib/python2.6/site-packages')
这段代码放在.ropeproject/config.py
中。