簡體   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