Windows 版 neovim で python3 (deoplete.nvim) を無理やり使う
どうしても windows 環境を整えたかったので,色々試したらできるようになったものの,正攻法とは言い難いのでメモ書き程度に.
もし,もっと筋の良い解決方法をご存知であれば,コメントしていただけると幸いです.
neovimのインストール
公式に従ってインストール.
特につまづくところはないはず.
has('python3')
の返り値を1にする
この Issueに書いてあるように, windows 環境では has('python3')
の返り値が 0.
python3 系をインストールして, pip3.exe install neovim
を実行する.
このコメントの設定を init.vim に追加する.
letg:python3_host_prog ='C:\Users\username\AppData\Local\Programs\Python\Python35\python.exe'
$VIMRUNTIME\autoload\provider\pythonx.vim
に以下のパッチを当てる.
diff --git a/usr/local/share/nvim/runtime/autoload/provider/pythonx.vim b/media/huyu/BEA4-08FB/pythonx.vimindex 6d6b389..0ebae4f 100644--- a/usr/local/share/nvim/runtime/autoload/provider/pythonx.vim+++ b/media/huyu/BEA4-08FB/pythonx.vim@@ -22,7 +22,7 @@ function! provider#pythonx#Require(host) abort
" Python host arguments
let prog = (ver == '2' ? provider#python#Prog() : provider#python3#Prog())
- let args = [prog, '-c', 'import sys; sys.path.remove(""); import neovim; neovim.start_host()']+ let args = [prog, '-c', '"import sys; sys.path.remove(\"\"); import neovim; neovim.start_host()"']
" Collect registered Python plugins into args
let python_plugins = remote#host#PluginsForHost(a:host.name)
@@ -101,11 +101,11 @@ function! s:check_interpreter(prog, major_ver, skip) abort
" 2 Neovim module cannot be loaded.
" Otherwise something else went wrong (e.g. 1 or 127).
let prog_ver = system([ a:prog , '-c' ,
- \ 'import sys; ' .- \ 'sys.path.remove(""); ' .- \ 'sys.stdout.write(str(sys.version_info[0]) + "." + str(sys.version_info[1])); ' .+ \ '"import sys; ' .+ \ 'sys.path.remove(\"\"); ' .+ \ 'sys.stdout.write(str(sys.version_info[0]) + \".\" + str(sys.version_info[1])); ' .
\ 'import pkgutil; ' .
- \ 'exit(2*int(pkgutil.get_loader("neovim") is None))'+ \ 'exit(2*int(pkgutil.get_loader(\"neovim\") is None))"'
\ ])
if v:shell_error == 2 || v:shell_error == 0
nvim-qt を起動して :echo has('python3')
すると 1 が返ってくる.dein.vim
とか使って deoplete.nvim
を導入すると動く.
動作環境
OS: Windows10(Build 14936)
neovim: v0.1.6-833-g35f67ee
python: 3.5.2