web-dev-qa-db-ja.com

Emacs-ローカルのタブ補完Python変数

ローカルpython変数のタブ補完を可能にする優れたemacsモードはありますか?ipython.elを設定しましたが、インタープリターのスコープ内でのみタブ補完を行います。私は関数またはファイルのローカル名前空間でトークンをタブ補完できるものを探しています。

28
zak23

M- /コマンドdabbrev-expandを実行します。これにより、どのモードでもローカル名が完成します。また、メタ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))

これがお役に立てば幸いです。

16
Amol Gawai

Emacs-autocomplete.el(バージョン0.2.0)をyasnippetと一緒に使用します。 Eclipse + Javaのような完全なオートコンプリート環境ではありませんが、私にとっては問題なく動作します。しかし、私のような一般的なemacsハッカーには十分です:)

1)オートコンプリートを ここ (最初のリンク)からダウンロードし、ロードパスディレクトリに配置します。また、使用する拡張機能をダウンロードします(注意:Rubyおよびetags拡張機能には追加のものが必要です)。それらもyout load-pathdirに配置します。

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キーを押してオートコンプリートします。

13
dermatthias

必要なタブ補完の種類を説明するブログ投稿は、 EmacsでのPythonコード補完 にあります。パッケージ、pymacs、 AutoComplete 、rope、ropemacs、rope mode、yasnippet、およびセットアップのインストールが少しありますが、最終的にはそれが報われることを願っています。

10
boskom

使用 ジェダイ

Python他のオートコンプリートライブラリよりもよく理解しています:

  • ビルトイン
  • 複数の返品または利回り
  • タプル割り当て/配列インデックス/辞書インデックス
  • with-ステートメント/例外処理
  • * args/** kwargs
  • デコレータ/ラムダ/クロージャ
  • ジェネレーター/イテレーター
  • いくつかの記述子:property/staticmethod/classmethod
  • いくつかの魔法の方法:__call____iter____next____get____getitem____init__
  • list.append()、set.add()、list.extend()など。
  • (ネストされた)リスト内包/三項式
  • 相対輸入
  • getattr()/ __getattr__/__getattribute__
  • 単純/通常のsys.pathの変更
  • isinstanceはif/while/assertをチェックします
5
Dave Halter

私はあなたが探しているかもしれないと思います このようなものPymacs および python-mode を使用して、探していることを実行します。

それがどのように機能するかを教えてください。

4
Shane C. Mason

最小限の手間で起動して実行したいだけの場合は、 emacs-for-python パッケージを試してください。

ハッピーコーディング!

3
Lester Cheung