Emacs - 本地 Python 变量的制表符补全

Posted

技术标签:

【中文标题】Emacs - 本地 Python 变量的制表符补全【英文标题】:Emacs - tab-completion of local Python variables 【发布时间】:2010-10-19 12:19:30 【问题描述】:

是否有一个好的 emacs 模式可以允许本地 python 变量的制表符补全?我设置了 ipython.el 但它只会在解释器范围内完成制表符。我正在寻找可以让我在函数或文件的本地命名空间中使用制表符完成标记的东西。

【问题讨论】:

【参考方案1】:

我认为您可能正在寻找something like this。它使用Pymacs 和python-mode 来满足您的需求。

让我们知道你的效果如何?

【讨论】:

我设置了它,它似乎没有完成本地范围内的变量 - 它应该吗?如果安装后我需要做一些事情,你能给我在emacs中打开它的确切步骤吗?谢谢【参考方案2】:

M-/ 运行命令 dabbrev-expand 。这将在任何模式下完成本地名称。 此外,我将 meta f1 绑定到嬉皮从所有开放缓冲区扩展。这对我很有用。

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

希望这是有用的。

【讨论】:

【参考方案3】:

描述您想要的选项卡完成类型的博客文章可以在以下位置找到 Python code completion in Emacs。 有一点安装包,pymacs,AutoComplete,rope,ropemacs,rope mode,yasn-p 和设置,但最后我希望它会得到回报。

【讨论】:

我喜欢ropemacs。它提供本地 Python 变量的制表符补全! 即使没有完整的rope+ropemacs+ropemode+pymacs 设置,自动完成模式也是值得的【参考方案4】:

我将 emacs-autocomplete.el(版本 0.2.0)与 yasn-p 一起使用。对我来说没问题,虽然它不像 eclipse+java 那样是一个完整的自动完成环境。但是对于像我这样的普通 emacs 黑客来说已经足够了 :)

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

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

【讨论】:

【参考方案5】:

如果您只想轻松启动并运行它,请尝试使用 emacs-for-python 软件包。

编码愉快!

【讨论】:

【参考方案6】:

使用Jedi!

它确实比任何其他自动完成库都更了解 Python:

内建 多重回报或收益 元组赋值/数组索引/字典索引 with-statement / 异常处理 *args / **kwargs 装饰器/lambdas/闭包 生成器/迭代器 一些描述符:属性/静态方法/类方法 一些神奇的方法:__call____iter____next____get____getitem____init__ list.append()、set.add()、list.extend()等 (嵌套)列表推导/三元表达式 相对导入 getattr() / __getattr__ / __getattribute__ 简单/常用的 sys.path 修改 isinstance 检查 if/while/assert

【讨论】:

以上是关于Emacs - 本地 Python 变量的制表符补全的主要内容,如果未能解决你的问题,请参考以下文章

emacs elpy代码补全功能

Emacs Python 自动补全--Elpy

Emacs配置Python开发

如何将制表符补全添加到 Python shell?

请教,关于emacs写lisp自动补全的设置

强制 emacs 使用制表符而不是多个空格