Fedora 24의 vim에서 python3 활성화

Fedora 24의 vim에서 python3 활성화

vim을 설치하고 구성했습니다 +python3/dyn. 실행하면 vim --noplugin사용할 수 있습니다 py3. 그러나 플러그인을 활성화한 후 다음 오류가 발생합니다.

E837: This Vim cannot execute :py3 after using :python
E263: Sorry, this command is disabled, the Python library could not be loaded.

플러그인 중 하나가 python2를 로드하여 사용 중인 Python 버전을 정의하는 것으로 의심됩니다(이 vim-bootstrap 질문과 유사합니다.). 문제는 어느 쪽인지 모른다는 것입니다.

내 vim 버전에서 python3을 어떻게 사용할 수 있나요?


플러그인이 설치됨

Vundle에는 다음 플러그인이 설치됩니다.

 60 " let Vundle manage Vundle, required
 61 Plugin 'gmarik/Vundle.vim'
 62 "Bundle 'Valloric/YouCompleteMe'
 63 Plugin 'tmhedberg/SimpylFold'
 64 Plugin 'vim-scripts/indentpython.vim'
 65 Plugin 'scrooloose/syntastic'
 66 Plugin 'scrooloose/nerdtree'
 67 Plugin 'jistr/vim-nerdtree-tabs'
 68 Plugin 'kien/ctrlp.vim'
 69 Plugin 'tpope/vim-fugitive'
 70 Plugin 'nvie/vim-flake8'
 71 "Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
 72 Plugin 'vim-airline/vim-airline'
 73 Plugin 'vim-airline/vim-airline-themes'
 74 Bundle 'klen/python-mode'
 75 Plugin 'jmcantrell/vim-virtualenv'

Python3을 기본/선호 버전으로 만들어 보세요.

나는 다음을 실행하여 python3을 선호하는 대안으로 만들려고 했습니다.

alternatives --install /usr/bin/python python /usr/bin/python3.5 2
alternatives --install /usr/bin/python python /usr/bin/python2.7 1

vim(또는 플러그인 중 하나)은 여전히 ​​python2.7을 사용하고 있으며 위와 같은 오류가 발생합니다.

내 vim 버전

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun  2 2016 10:02:17)
Included patches: 1-1868
Modified by <[email protected]>
Compiled by <[email protected]>
Huge version without GUI. 

답변1

문제는 has('python')vim이 python/dyn 및 python3/dyn으로 컴파일될 때 if 문을 실행하면 python3을 사용할 수 없게 된다는 것입니다. 가장 간단한 해결책은 다음과 같은 것을 추가하는 것입니다.

if exists('py2') && has('python')
elseif has('python3')
endif

Vundle이 무엇이든 로드하기 전에 이를 .vimrc에 추가하세요. 그런 다음 Python 2를 사용해야 하는 경우 vim --cmd 'let py2 = 1'.

has('python')또는 귀하의 플러그인을 살펴보고 이전 플러그인 3개를 찾았습니다 has('python3').

  1. YouCompleteMe: 당신이 이 질문에 대해 댓글을 달았다는 것을 알고 있습니다. 하지만 이것이 제가 이 질문을 우연히 발견한 방식이므로 다른 사람들도 여기로 이어질 수 있습니다. YouCompleteMe/plugin/youcompleteme.vim의 36번째 줄에서 먼저 python3: 을 확인하세요 elseif !has( 'python3' ) && !has( 'python' ).

  2. python-mode: python-mode/plugin/pymode.vim을 보면 275행 주위에 "has" if 문이 있습니다. 실제로 전역 변수를 설정하여 g:_uspy특정 버전을 강제로 적용 할 수 있다는 것을 알 수 있습니다. 사용된. 따라서 g:_uspy = ':py3'Vundle 콘텐츠 앞에 .vimrc를 배치하거나 pymode.vim에서 if 문을 편집하세요.

  3. vim-virtualenv: YCM과 동일합니다. vim-virtualenv/plugin/virtualenv.vim의 10번째 줄에 있는 if 문의 조건을 반대로 바꿉니다.

물론 이렇게 하면 로드되는 첫 번째 항목만 수정하면 됩니다.

답변2

Python 3이 설치되어 있다고 가정하면 ...

:python사용하거나 :python3대신 실행:py3

Vim에서 이 코드를 사용해 보세요. Python 3에서 실행됩니다.

:python3 print("Hello world")

자세한 내용은:

:help python3

관련 정보