セットアップ
私の.vimrc
中には次の行があります:
" .vimrc
let g:virtualenv_directory="/Users/Kit/Development/virtualenv"
それから~/.vim/ftplugin/python/virtualenv.vim
私はこれらを持っています:
py << EOF
import os.path
import sys
import vim
if 'VIRTUAL_ENV' in os.environ:
project_base_dir = os.environ['VIRTUAL_ENV']
sys.path.insert(0, project_base_dir)
activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
print "virtualenv in os.environ!"
EOF
VirtualEnvActivate my-virtualenv-python-2.7
私は~/.vim/ftplugin/python/virtualenv.vim
これらのSuperTab設定を持っています:
setlocal omnifunc=pythoncomplete#Complete
setlocal completeopt=menuone,longest,preview
let g:SuperTabDefaultCompletionType="<c-x><c-]>"
いつも作業している作業ディレクトリで、次のbashコマンドを実行して、TAGS
すべてのファイルのファイル.py
を生成しました。
find . -name '*.py' -type f -print0 | xargs -0 etags -l python
問題
たとえば、次のスクリプトが正常に機能するようにmain.py
、オブジェクトapp
が内部にあるaがあります。
import main
new_app = main.app() # works totally fine Python-wise
たとえば、新しいコードを記述して、SuperTabオムニコンプリーションを使用しようとすると、次のようになります。
import main
new_new_app = main.<Tab>
これは私が得るものです:
new_new_app = mainself.
そして、私がTab数回押すと:
new_new_app = mainselfselfselfself.
私のために働くもの
ただし、次のことを行う場合:
new_new_app = main.a<Tab>
a..
モジュールに属していないオブジェクトを含むオブジェクトの全リストを取得しますmain
。
欲しいもの
次のように設定した場合.vimrc
:
let g:SuperTabDefaultCompletionType="context"
次に、標準のPythonライブラリのモジュールを使用します。
import sys
sys.<Tab> # This will still result in sysselfselfself.
sys.p<Tab> # This will result in the correct list of `sys` members beginning with `p`
ただし、この"context"
設定は自分のモジュールでは機能しません。
new_new_app = main.a<Tab>
# Will say at the bottom: Omni completion (^O^N^P) Pattern not found
質問
omnicompletionとSuperTabを設定して、標準ライブラリモジュールと同様に自分のモジュールでも動作するようにするにはどうすればよいですか?selfselfself.
煩わしさを解消するだけでなく?