Я взял это из natws vimrc (я думаю ... может быть, sontek), но это должно сработать, если ваши пакеты доступны для вашей текущей установки Python. Это позволяет вам использовать gf, но также настраивает поиск этих файлов для автозаполнения. Обратите внимание на часть py <<EOF
, которая начинает раздел, интерпретируемый в Python. Это означает, что для его использования вам потребуется установить интерпретатор python в vim.
function! LoadPythonPath()
py <<EOF
# load PYTHONPATH into vim, this lets you hover over a module name
# and type 'gf' (for goto file) and open that file in vim. Useful
# and easier than rope for simple tasks
import os.path
import sys
import vim
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF
endfunction
Кстати, мне не нравится автоматическая загрузка, поэтому я установил для нее функцию, которая интеллектуально загружает / выгружает при вызове / первом входе в документ 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 <<EOF
# load PYTHONPATH into vim, this lets you hover over a module name
# and type 'gf' (for goto file) and open that file in vim. Useful
# and easier than rope for simple tasks
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path-=%s" % (p.replace(" ", r"\ ")))
EOF
let g:PythonPathLoaded = 0
endfunction
Надеюсь, это поможет! Кроме того, дополнительным бонусом является то, что это будет загружать ваши пакеты независимо от того, используете ли вы virtualenv (поскольку, я считаю, он запускает все, что установлено в качестве 'python' на данный момент).