python omnicomplete を使用できる唯一のものは、システムモジュールです。サイト パッケージ内のモジュールまたは現在作業中のモジュールに関するヘルプは何も得られません。
6 に答える
サイトパッケージの 1 つの ctags を生成すると、そのパッケージで動作し始めました。つまり、omnicomplete 関数は、sys 以外のモジュールの ctags に依存していると推測しています。
編集:まったくそうではありません。
ここに問題があります-私の部分での不十分なテスト-オムニコンプリートWASは、プロジェクトの一部で機能していましたが、ほとんどではありませんでした。
問題は、私がdjangoプロジェクトに取り組んでいることでした。django.dbをインポートするには、環境変数を設定する必要があります。django.db をインポートできなかったため、django.db から継承したクラス、または django.db から継承したクラスをインポートしたモジュールは完了しませんでした。
PYTHONPATH またはサイト パッケージで自分のモジュールを完成させます。使用している pythoncomplete.vim スクリプトのバージョンはわかりませんが、最新のものであることを確認してください。
編集:これは私のシステムで見ているもののいくつかの例です...
このファイル (mymodule.py) を PYTHONPATH のディレクトリに配置し、次に site-packages に配置します。どちらの場合も、以下のスクリーンショットを取得できました。
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass
トラブルシューティングのヒント: オムニコンプリートしようとしているモジュールが VIM でインポートできることを確認してください。VIMが気に入らなかった構文的に正しいPythonがいくつかありました:
:python import {module-name}
Traceback (most recent call last):
File "<string>", line 1, in ?
File "modulename/__init__.py", line 9
class empty_paranthesis():
^
SyntaxError: invalid syntax
適切な例として、クラス定義から括弧を削除すると、VIM がモジュールをインポートできるようになり、その後、そのモジュールの OmniComplete が機能し始めました。
PYTHONPATH
環境変数を適切に設定する必要があることに注意することが重要ですが、前の回答に従って、Vim には重要なバグがあり、インポートが失敗したときにオムニコンプリートが機能しなくなります。Vim 7.2.79 の時点では、このバグは修正されていません。
今夜、Python reddit でこれに出くわしました: PySmell。あなたが探しているもののように見えます。
PySmell は、Python IDE 補完ヘルパーです。
Python ソース コードを実行せずに静的に分析しようとし、IDE ツールが使用できるプロジェクトの構造に関する情報を生成します。
pydictionスクリプトの後だと思います。独自のものやサイト パッケージをオムニ コンプリートに追加できます。
あなたがそれに取り組んでいる間、あなたの python.vim ファイルに以下を追加してください...
set iskeyword+=.
これにより、たとえば次のように入力すると、パッケージ機能をオートコンプリートできます...
os.path.
次に [CTRL][N] を押すと、os.path の関数のリストが表示されます。