繁体   English   中英

Emacs-局部Python变量的制表符完成

[英]Emacs - tab-completion of local Python variables

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

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

希望这是有用的。

我将emas-autocomplete.el(版本0.2.0)与yasnippet一起使用。 尽管它不是像eclipse + java那样的完整的自动完成环境,但对我来说可以正常工作。 但是对于像我这样的普通emacs黑客来说就足够了:)

1)从此处 (第一个链接)下载自动完成功能,并将其放在您的load-path目录中。 另请下载您要使用的扩展(注意: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文件执行Mx加载文件。 编写一些代码,然后按TAB键自动完成。

可以在Emacs中的Python代码完成中找到描述所需的选项卡完成类型的博客文章。 有一些安装软件包,pymacs, AutoComplete ,rope,ropapmacs,rope模式,yasnippet和设置,但是最终我希望它会有所回报。

使用绝地

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

  • 内置
  • 多重收益或收益
  • 元组分配/数组索引/字典索引
  • 有陈述/异常处理
  • * args / ** kwargs
  • 装饰工/ lambdas /瓶盖
  • 生成器/迭代器
  • 一些描述符:property / staticmethod / classmethod
  • 一些魔术方法: __call____iter____next____get____getitem____init__
  • list.append(),set.add(),list.extend()等。
  • (嵌套)列表推导/三元表达式
  • 相对进口
  • getattr()/ __getattr__ / __getattribute__
  • 简单/常用的sys.path修改
  • isinstance检查if / while / assert

我认为您可能正在寻找这样的东西 它使用Pymacspython-mode来完成您想要的工作。

让我们知道如何为您工作?

如果您只是想以最小的麻烦启动并运行它,请尝试使用emacs-for-python软件包。

编码愉快!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM