Emacs - 本地Python变量的标签补全
有没有一个好的 Emacs 模式,可以让我在本地 Python 变量上使用 Tab 键自动补全?我已经设置了 ipython.el,但它只能在解释器的范围内进行补全。我想要的是一个可以在函数或文件的本地命名空间中使用 Tab 键补全的工具。
6 个回答
你可以在这个博客里找到你想要的那种标签补全的介绍,链接是 Emacs中的Python代码补全。里面提到了一些需要安装的东西,比如pymacs、AutoComplete、rope、ropemacs、rope模式、yasnippet,还有一些设置的步骤。不过我希望最后这些努力都是值得的。
我使用的是 emacs-autocomplete.el(版本 0.2.0),还搭配了 yasnippet。对我来说效果还不错,虽然它的自动补全功能没有像 eclipse+java 那样全面。但对于像我这样的普通 emacs 用户来说,已经足够用了 :)
1) 从 这里(第一个链接)下载 autocomplete,并把它放到你的 load-path 目录里。还要下载你想用的扩展(注意:Ruby 和 etags 扩展需要额外的东西)。同样把它们放到你的 load-path 目录里。
2) 下载 yasnippet,按照页面上的说明进行安装(包括 (require ...) 的部分)。
3) 在你的 .emacs 文件中添加以下几行,并根据你的需要进行编辑(比如你想使用的所有扩展):
(require 'auto-complete)
(global-auto-complete-mode t)
(when (require 'auto-complete nil t)
(require 'auto-complete-yasnippet)
(require 'auto-complete-python)
(require 'auto-complete-css)
(require 'auto-complete-cpp)
(require 'auto-complete-emacs-lisp)
(require 'auto-complete-semantic)
(require 'auto-complete-gtags)
(global-auto-complete-mode t)
(setq ac-auto-start 3)
(setq ac-dwim t)
(set-default 'ac-sources '(ac-source-yasnippet ac-source-abbrev ac-source-words-in-buffer ac-source-files-in-current-dir ac-source-symbols))
想了解更多选项的信息,可以查看 auto-complete.el 文件。
4) 重启 emacs,或者用 M-x load-file 命令加载你的 .emacs 文件。写一些代码,然后按 TAB 键进行自动补全。
M-/ 这个组合键会执行一个叫做 dabbrev-expand 的命令。这个命令可以在任何模式下完成本地的名称,也就是说,它能帮助你快速输入你之前用过的变量名或者函数名。
另外,我把 meta f1 这个组合键绑定到了 hippie expand,这个功能可以从所有打开的缓冲区中进行扩展。对我来说,这个功能非常有用。
;; Bind hippie-expand
(global-set-key [(meta f1)] (make-hippie-expand-function
'(try-expand-dabbrev-visible
try-expand-dabbrev
try-expand-dabbrev-all-buffers) t))
希望这些对你有帮助。