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.

プラグインの1つが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文の条件を逆に置き換えます。

もちろん、これはロードされる最初の項目だけを変更するだけです。

おすすめ記事