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')
。
YouCompleteMe:あなたはこの質問にコメントしたことを知っています。しかし、これが私がこの質問を偶然発見した方法なので、他の人もここにつながる可能性があります。 YouCompleteMe/plugin/youcompleteme.vimの36行目で、まずpython3:をチェックしてください
elseif !has( 'python3' ) && !has( 'python' )
。python-mode: python-mode/plugin/pymode.vimを見ると、275行の周りに "has" ifステートメントがあります。実際、グローバル変数を設定することで、
g:_uspy
特定のバージョンを強制的に適用できることがわかります。使用される。したがって、g:_uspy = ':py3'
Vundleコンテンツの前に.vimrcを配置するか、pymode.vimのifステートメントを編集してください。vim-virtualenv: YCM と同じです。 vim-virtualenv/plugin/virtualenv.vimの10行目のif文の条件を逆に置き換えます。
もちろん、これはロードされる最初の項目だけを変更するだけです。