xarek1986
@xarek1986
Инженер

Как заставить связку vim+python-mode+{jedi-vim} работать с Python3?

Салют Господа!

Имеем:
1. OS Gentoo Linux 3.18.11-gentoo x86_64
2. app-editors/vim
USE="X acl gpm nls python"
PYTHON_SINGLE_TARGET="python2_7"
PYTHON_TARGETS="python2_7 python3_3"

3. app-vim/python-mode
4. vimrc:
set nocompatible              " be iMproved, required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle.vim
call vundle#begin()
Plugin 'gmarik/vundle.vim'

Plugin 'tomasr/molokai'
Plugin 'scrooloose/nerdtree'
Plugin 'AutoClose'
Plugin 'bling/vim-airline'

Plugin 'davidhalter/jedi-vim'
call vundle#end()            " required
filetype plugin indent on

set t_Co=256
set cursorline
set nocompatible
set wrap
set linebreak
set showcmd
set ruler
set confirm
set smartindent
set autoindent
set tabstop=4
set shiftwidth=4
"set list
set cursorline
set wildmenu
set wcm=<TAB>
colorscheme molokai
set guifont=Dejavu\ Sans\ Mono\ Book\ 10

set laststatus=2

"----------------- Py-Mode -----------------------------"
let g:pymode_python = 'python3'
let g:pymode_rope = 0
let g:pymode_rope_completion = 0
let g:pymode_rope_complete_on_dot = 0

"----------------- Jedi ----------------------------------"
let g:jedi#force_py_version = 3

Проблема:
Ни python-mode, ни jedi не автодополняют python3, т.е. предлагает print "somth" вместо print("somth"), и при импорте выдает только модули установленые в Py2.
Так же набросаный в виме
import sys
for i in sys.path: print(i)

выдает
/usr/share/vim/vimfiles/pylibs
/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/usr/lib64/python2.7/site-packages

Господа, кто-нибудь знает как заставить эту связку работать только с Py3?
  • Вопрос задан
  • 2459 просмотров
Решения вопроса 1
gmist
@gmist
Во-первых, необходимо определиться, какой из этих двух плагинов выводит данный автокомплит, т.к. jedi-vim во многих случаях конфликтует с python-mode, о чем и сказано в документации. Иногда это проявляется в диких тормозах автокомплита, а иногда и в самом автокомлите.

Во-вторых, для корректной работы jedi-vim с Python 3, необходим Vim с +python3, т.к. в своей работе он использует "py3file" и "python3" команды. Убедиться в поддержке python3 можно через vim --version, либо вызвав :python3 в самом редакторе.

В-третьих, для комфортной работы лучше всего запускать Vim из соответствующего виртуального окружения с необходимой версией Python интерпретатора, т.к. та же pylama (либо как внешний плагин, либо из комплекта python-mode), в случае если Vim собран с +python и +python3 одновременно, в некоторых ситуация может выдавать весьма занятный вывод линтинга.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы