Emacs - tab-completion本地Python变量

时间:2009-04-15 04:04:19

标签: python emacs autocomplete

是否有一个好的emacs模式允许Tab键完成本地python变量?我设置了ipython.el,但它只会在解释器的范围内完成选项。我正在寻找能让我在函数或文件的本地命名空间中使用tab-complete标记的东西。

6 个答案:

答案 0 :(得分:16)

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))

希望这很有用。

答案 1 :(得分:13)

我使用emacs-autocomplete.el(版本0.2.0)和yasnippet。对我来说没问题,虽然它不像eclipse + java这样完整的自动完成环境。但对于像我这样的普通emacs黑客来说足够了:)。

1)从here(第一个链接)下载自动完成并将其放入您的加载路径目录。还要下载你想要使用的扩展(注意:Ruby和etags扩展需要额外的东西)。把它们放在你的load-path dir中。

2)下载yasnippet并按照该页面上的说明(包括(要求......)部分)进行安装。

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或使用.emacs文件执行M-x加载文件。写一些代码并按TAB键自动完成。

答案 2 :(得分:10)

可以在以下位置找到描述所需选项卡完成情况的博文 Python code completion in Emacs。 有一些安装包,pymacs,AutoComplete,绳索,绳索,绳索模式,yasnippet和设置,但最后我希望它会得到回报。

答案 3 :(得分:5)

使用Jedi

它比任何其他自动完成库更能理解Python:

  • 建宏
  • 多次退货或收益
  • 元组赋值/数组索引/字典索引
  • with-statement / exception handling
  • * args / ** kwargs
  • decorators / lambdas / closures
  • 生成器/迭代器
  • 一些描述符:property / staticmethod / classmethod
  • 一些神奇的方法:__call____iter____next____get____getitem____init__
  • list.append(),set.add(),list.extend()等。
  • (嵌套)列表理解/三元表达式
  • 相对进口
  • getattr()/ __getattr__ / __getattribute__
  • 简单/通常的sys.path修改
  • isinstance检查if / while / assert

答案 4 :(得分:4)

我认为您可能正在寻找something like this。它使用Pymacspython-mode来完成您正在寻找的内容。

让我们知道它是如何为您服务的?

答案 5 :(得分:3)

如果您只想轻松搞定并运行,请尝试emacs-for-python包。

快乐的编码!