回答:
私はPythonにJediモードを使用していますが、とても満足しています。関数呼び出しを正確に検索するだけでなく、複雑な状況(継承など)でも関数を正しい定義に解決します。ブートするオートコンプリートが付属しています。 http://tkf.github.io/emacs-jedi/latest/
あなたが言及したPyCharmの機能は私のお気に入りの1つであり、PyCharmをEmacsに完全に置き換えようとしたときに最初に探したものの1つです(できたことを嬉しく思います)。
別の回答で述べたように、elpy
パッケージには(他の多くの便利なIDE機能に加えて)この機能があります。ただし、elpy-goto-definition
ポイントでシンボルを検索するために使用する場合、遅かれ早かれ、PyCharmが探しているものを見つけることに成功する場合もありますが、そうではないことがわかりますelpy
。ドキュメントが言うように:
バックエンドは、どの種類のシンボルがポイントにあるかを常に特定できるとは限りません。特に、いくつかの間接参照の後、彼らは基本的に正しい推測の希望を持っていないので、彼らはしません
この場合、呼び出しelpy-goto-definition
は何もせず、エコーエリアに小さなエラーメッセージを表示します。これが発生した場合、もちろん、あなたはまだあなたが探しているものを見つけたいです、そしてelpy
あなたをぶら下げたままにしません。この種の状況では、私は常にC-c C-s
(elpy-rgrep-symbol
)を使用しrgrep
て、プロジェクトのポイントにシンボルを配置します。少なくとも私にとっては、多かれ少なかれ探しているものが常にrgrep
結果に表示されます。実際、これはPyCharmの機能にも似ていると思います。何かの定義を調べて、PyCharmがどこで定義されているかわからない場合は、リストから選択します。私は実際にはelpy
の実装を好みます。なぜなら、最初のオプションに移動すると消える一時的なリストではなく、elpy-rgrep-symbol
可能性のリストを別のバッファで開いたままにして、必要に応じてそれらの間で前後にジャンプできるようにします。
私のワークフローはほとんど常に最初の呼び出しでelpy-goto-definition
あり、失敗した場合はcall elpy-rgrep-symbol
なのでelpy-rgrep-symbol
、elpy-goto-definition
失敗した場合に自動的に呼び出す単純な関数を一緒にハックすることにしました。その機能は以下のとおりです。
(defun goto-def-or-rgrep ()
"Go to definition of thing at point or do an rgrep in project if that fails"
(interactive)
(condition-case nil (elpy-goto-definition)
(error (elpy-rgrep-symbol (thing-at-point 'symbol)))))
次に、これをM-.
(のデフォルトのバインディングelpy-goto-definition
)にバインドします 。
(define-key elpy-mode-map (kbd "M-.") 'goto-def-or-rgrep)
このようにして、お気に入りのエディターでお気に入りのPyCharm機能の1つを使用できます。これは古い質問の一種であり、この問題を既に解決したか、先に進んだかもしれませんが、あなたや他の誰かがこれを役に立つと思うことを願っています!
M-。anacondaモードで動作します(elpyで問題が発生した後に切り替えました)。
- :あなたは私の場合、私は次の操作を行い、適切なPython環境を必要とすることに注意してくださいmkvirtualenv someenv
- python setup.py develop
すべてのモジュールの開発または使用(またはその代わりにインストールされたバージョンのソースに到達することを好む) - M-x venv-workon
someenv
emacsの中でパスを有効にします。
それから私configureはanaconda-mode
アクティブにするたびI編集のpythonと出来上がり、M-.
作品
いい質問です。これはすぐに使用できるわけではなく、本格的なIDEの便利な機能です。私はそれを行うcscope
素敵なヘルムインターフェースで、: http://wikemacs.org/wiki/Python#cscopeをそれ缶「それが使用される場合、どここのシンボルが定義されている?」などの答え質問が。
ps:邪悪なモードでは、同じファイル内のシンボルの定義に移動できますgd
。
gd
悪がファイル内で最初に現れるシンボルのみを見つけると信じています(docstringにかかわらず:「定義の下にある、またはポイントの下にあるシンボルの最初の出現」)
M-.
にバインドされelpy-goto-definition
ているトリックを行います。を使用するM-*
と、バッファ内の前の場所に戻ることができます。これにより、何かをすばやく確認して前の場所に戻ることができます。
私もC-c C-o
よく使用します(elpy-occur-definitions
)。これにより、すべてのクラスと関数が現在のバッファーであるウィンドウが開きます。そのバッファーから、を押すEnter
と、ソースコードの定義が表示されます。
M-.
はバインドされてxref-find-definitions
おりelpy-goto-definition
、デフォルトではどのキーにもありません(ただし、メニューにあります)。サイトパッケージで定義を見つけることは、まったくうまくいかないようです。
python-mode
Emacsがデフォルトで持っているものではありません。(stackoverflow.com/questions/11363089/...)