2015-10-31 47 views
0

我使用youcommpleteme來自動完成輔助編寫python代碼。而且我發現諸如ossimplejson之類的內置模塊將會像魅力一樣工作。vim youcompleteme無法自動完成自定義的python模塊

但是,如果我自己寫了一些模塊,並導入模塊後自動完成將無法工作。舉例來說,如果我有一個目錄結構是這樣的:

├── utils 
│   ├── DBCUtils.py 
│   ├── DBCUtils.pyc 
│   ├── email.conf 
│   ├── __init__.py 
│   ├── __init__.pyc 
│   ├── log.py 
│   ├── mail.py 
│   ├── mail.pyc 
│   ├── mysql.conf 
│   ├── mysqlorm.py 
│   ├── mysqlorm.pyc 
│   ├── propertyutils.py 
├──test.py 

如果在test.py進口mysqlorm.py:

from utils.mysqlorm import * 

session = getSession() 

getSession()這是在utils.mysqlorm定義不會自動完成,但如果我寫道:

import simplejson as json 
json.dumps(dic, indent=4, ensure_asscii=False) 

這將自動完成。

而且我還發現,如果我在同一個vim會話中打開mysqlorm.py,文件中定義的所有方法都會自動完成,但我不想打開打開導入的每個文件。

那麼有沒有一種方法可以讓自動完成助手爲理所當然(無需首先打開)?

回答

0

YouCompleteMe使用Jedi。

Jedi基於緩衝區vim和sys.path進行自動完成。 爲了避免打開python文件,將它們添加到sys.path中。

對於這一點,你可以創建vim的腳本/後/文件類型插件/ my_script.vim

在此腳本,您currentpath添加到sys.path中。

例如:

python << EOF 
import os 
import sys 
sys.path.append(os.getcwd()) 
EOF 

關注,GETCWD在那裏你打開vim的回報。

而且,如果您使用的是buildout,則可以使用以下腳本:https://github.com/FBruynbroeck/vim-buildout