非標準PythonライブラリのためにVimにオートコンプリートを追加するにはどうしたらいいですか?

たとえば、Google App Engine SDKを使用したPythonスクリプトがあります。

from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

モジュール db にサブモジュール Key があるので、オートコンプリートを使用しようとしています:

db.KTab

しかし、Vimウィンドウの一番下には、次のように表示されます。

-- Omni completion (^O^N^P) Pattern not found

Vimのオートコンプリートがそれらを見つけるために、非標準のPythonライブラリへのパスをどのように含めるのですか?また、ドキュメントストリングも表示しますか?

5

2 答え

ライブラリファイルをタグファイルに追加する必要があります。たとえば、env /:にある仮想環境にpipを使ってGoogle App Engineをインストールした場合、

virtualenv --no-site-package env/
source env/bin/activate
pip install google_appengine

...実行する必要があります:

ctags -R --python-kinds=-i -o tags env/

pipでgoogle_appengineをインストールしなかった場合は、Pythonライブラリのパスを見つけてください(ヒント:$ PYTHONPATHで指定し、この参照ページ:" Unixでは、これは通常:/ usr/local/lib/pythonです。 ")、env /あなたが見つけた道で

最後に、.vimrcファイルでタグファイルを解析する必要があります。例えば、私の.vimrcでは、私は以下を持っています:

set tags+=/path/to/my/tags

2
追加された
pip を使用しなかったのはどうですか?言う、ちょうど図書館の道を指すような何かをしなさいか。そのための手続きは何ですか?
追加された 著者 Kit,
あなたの質問に答えるために編集された回答。
追加された 著者 Régis B.,

I grabbed this from natw's vimrc (I think...maybe sontek), but it should do the trick, so long as your packages are findable by your current install of Python. This lets you use gf, but also sets up searching these files for autocompletion. Note the py < part, which starts a section interpreted in Python. This means you'd have to have the python interpreter installed in vim to use it.

function! LoadPythonPath() 
py <

Btw、私はこのロードを自動的にしたくないので、私はそれを呼び出すときに知的にロード/アンロードする関数に設定します/最初にPythonのドキュメントを入力します。そして、前の関数に let g:PythonPathLoaded = 1 を追加します。

function! GetPythonPath()
    if !exists("g:PythonPathLoaded")
        call LoadPythonPath()
        return
    elseif g:PythonPathLoaded
        return
    else
        call LoadPythonPath()
    endif
endfunction

そして、私はアンロード機能も持っています...これは大きな違いがあるかどうかはわかりませんが。

function! UnloadPythonPath()

py <

お役に立てれば!さらに、virtualenvを使用しているかどうかにかかわらず、これはあなたのパッケージをロードするという追加の利点です(現時点では「python」として設定されているものはすべて実行されます)。

1
追加された