23

Pythonに相当するスライムはありますか?

たとえば、カーソルをfoo()に置き、M-を実行するとします。(定義にジャンプ)関数fooのソース定義を見たい

これは、fooが含まれているかどうかに関係なく機能するはずです

1)ローカルプロジェクトディレクトリ

2)一部の〜/ .virtualenvs / bar / lib /site-packages

3)他のpython-pathで

4)仮想環境が使用されています(つまり、現在の仮想環境を調べる必要があります)

pymacs / ropemacsの組み合わせはこれのいずれかを行いますか?

4

6 に答える 6

16

-eを回避するには、etagsを使用し、findを使用してpyファイルを再帰的に追加します。

find . -type f -name '*.py' | xargs etags
于 2010-08-17T14:45:48.457 に答える
8

ここに記載されている回答のほとんどは時代遅れです。簡単な解決策は、etagなしでelpyを使用することですM-.(追加の作業が必要です)。

ここに記載されているようにelpyをインストールします。

M-x package-install elpy

次に、Pythonパッケージをインストールします

$ sudo pip install rope jedi

emacsを再起動し、Pythonファイルを開いて実行しますM-.

Elpyは完全に文書化されており、ここで読むことM-.ができます。

于 2015-09-14T11:49:04.937 に答える
4

M-。通常は「find-tag」関数を実行します。PythonソースファイルのTAGSファイルを作成する必要があります。次にvisit-tags-table、M-を実行する前に""します。そうすれば、Emacsはタグのすべての定義にジャンプします。CuM-と入力します。タグの次の定義にジャンプします。ヘルプについては、find-tagのドキュメントを参照してください。PythonソースファイルからTAGSファイルを作成する方法については、Emacsのヘルプを参照してください。

たとえば、過剰なCtagsを使用してTAGSファイルを作成できます。

Pythonファイルのルートディレクトリに移動し、次のようにします。

ctags -e -R .

TAGSファイルは通常、プロジェクトのルートディレクトリに作成されます。

于 2010-08-17T11:38:44.843 に答える
2

以下は、現在のプロジェクトのインデックスになります

find . -type f -name '*.py' | xargs etags

ただし、インポートしたライブラリにインデックスを付けたい場合。まず、virtualenvをアクティブにします。次に、whichPythonを使用してライブラリがどこにあるかを検出し、それらをetagにパイプします。

workon my-project # if using virtualenvwrappwer
source bin/activate # if using virtualenv

find ${$(which python)/\/bin\/python/} -type f -name '*.py' | xargs etags
于 2015-03-28T16:53:14.410 に答える
2

受け入れられた答えは重要なポイントを見逃します。そのetagsように実行するとfind . -type f -name '*.py' | xargs etags、ファイルごとに毎回TAGSファイルが生成されます。

これを行う正しい方法は、既存のTAGSファイルに次の--appendようにデータを追加することです。

rm -f TAGS
find . -type f -name '*.py' -print0 | xargs -0 etags --append

また、仮想環境サイトパッケージディレクトリからの識別子を含める場合(例:)~/.virtualenvs/bar/lib/site-packages

SITEPACKAGES=$(cdvirtualenv;pwd)/lib/python3.6/site-packages/
find $SITEPACKAGES -type f -name '*.py' -print0 | xargs -0 etags -a

*python3.6現在のPythonバージョンに調整する

于 2017-06-25T14:40:14.610 に答える
1

emacsのanaconda-modeおよびcompany-anacondaパッケージを試してください。構成の更新:

(eval-after-load "company"
 '(add-to-list 'company-backends 'company-anaconda))
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'company-mode)

pythonic-activateある場合は、を使用してvirtualenvに切り替えます。

これで、を押して戻るM-.ことができます。M-*

于 2018-03-06T10:34:55.697 に答える