NeoVimを始めるよくある動機のひとつに、自動補完のdeoplete.nvimのような強力なプラグインを使いたいというのがあります。
しかし、deoplete.nvimなど一部のプラグインはPythonが必要なことがあり、環境構築は少々大変です。
そこでこのエントリでは、NeoVimをanyenv/pyenvを使ってPythonにパスを通しつつMacにインストールして自動補完プラグインを有効にするまでの手順を紹介します。
anyenvはpyenvやrubyenvなどを一元管理するためのツールで、Homebrewでインストールできます。
インストールしたらターミナルを一度閉じて開きなおします。
$ brew install anyenv
$ anyenv init
# ターミナルを開き直す
anyenvを使ってpyenvをインストールします。
pyenvはバージョンの異なるPythonを管理するためのツールです。
$ anyenv install pyenv
使っているシェルに合わせて ~/.bashrc もしくは ~/.zshrc に下記を追記します。
eval "$(pyenv init -)"
追記したらターミナルを一度閉じて開きなおします。
Python環境を構築するためにpyenv-virtualenvをインストールします。
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
使っているシェルに合わせて ~/.bashrc もしくは ~/.zshrc の先ほど追加したeval "$(pyenv init -)"
の下あたりに下記を追記します。
eval "$(pyenv virtualenv-init -)"
追記したらターミナルを一度閉じて開きなおします。
pyenv-virtualenvを使ってNeoVimのためのPython2系、3系それぞれの環境を作っていきます。
# 最新のバージョン情報を取得(pyenvをもともと使っていた人向け)
cd ~/.anyenv/envs/pyenv/plugins/python-build/../.. && git pull && cd -
# Python2系
$ pyenv install 2.7.17
$ pyenv virtualenv 2.7.17 neovim2
$ pyenv activate neovim2
$ pip2 install neovim
# Python3系
$ pyenv install 3.8.6
$ pyenv virtualenv 3.8.6 neovim3
$ pyenv activate neovim3
$ pip install neovim
$ pyenv deactivate
Python2環境をneovim2、Python3環境をneovim3という名前で作成しました。
HomebrewでNeoVimをインストールします。
$ brew install neovim
インストールしたらNeoVimの設定ファイルを作成します。
NeoVimの設定ファイルは ~/.config/nvim/init.vim になります。
$ mkdir -p ~/.config/nvim
$ touch ~/.config/nvim/init.vim
~/.config/nvim/init.vim を開き下記を記述します。
let g:python_host_prog = $PYENV_ROOT.'/versions/neovim2/bin/python'
let g:python3_host_prog = $PYENV_ROOT.'/versions/neovim3/bin/python'
追記したらnvim
コマンドでNeoVimを立ち上げます。
立ち上げたらPythonのパスが通っているか確認します。コマンドモードで:checkhealth
と入力します。
$ nvim
# :checkhealth と入力
少し待って## Python 2 provider (optional)
と## Python 3 provider (optional)
の項目が表示されOKになっていれば正しくパスが通っています。
プラグインマネージャはvim-plugを使用します(別にdein.vimというのもあるようです)。
NeoVim用のインストールコマンドを実行します。
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
インストールしたら再度設定ファイル ~/.config/nvim/init.vim を開き下記のcall plug#begin
以降を追記します。
let g:python_host_prog = $PYENV_ROOT.'/versions/neovim2/bin/python'
let g:python3_host_prog = $PYENV_ROOT.'/versions/neovim3/bin/python'
" ↓追記
call plug#begin(stdpath('data') . '/plugged')
" Make sure you use single quotes
call plug#end()
これでプラグインを使う準備ができました。
vim-plugではcall plug#begin()
とcall plug#end()
の間に追加したいプラグインを記述します。
試しにカラースキームであるjellybeansをインストールしてみましょう。
~/.config/nvim/init.vim にPlug 'nanotech/jellybeans.vim'
とcolorscheme jellybeans
を追記します。
let g:python_host_prog = $PYENV_ROOT.'/versions/neovim2/bin/python'
let g:python3_host_prog = $PYENV_ROOT.'/versions/neovim3/bin/python'
call plug#begin(stdpath('data') . '/plugged')
" Make sure you use single quotes
Plug 'nanotech/jellybeans.vim' " ←追記
call plug#end()
colorscheme jellybeans " ←追記
保存したら一度NeoVimを開きなおし:PlugInstall
を実行します。
インストールが完了したら、NeoVimで適当なファイルを開いてみましょう。カラースキームが適用されているはずです。
最後に冒頭で紹介した自動補完のベースとなるdeoplete.nvimプラグインをインストールして自動補完を有効にしてみます。
今回はGo言語で試すためvim-goも一緒に導入します。
call plug#begin()
とcall plug#end()
の間に下記を追記します。
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
let g:deoplete#enable_at_startup = 1
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
保存したら一度NeoVimを開きなおし:PlugInstall
を実行します。
インストールが完了したら、nvim hello.go
のようにしてGoファイルを開いてみます。するとvim-goによってテンプレートが挿入されます。
試しにmain
関数内でfm
とタイプすると下記のように自動補完候補が表示されるはずです。
補完候補はCtrl+Nで次の候補、Ctrl+Pで前の候補を選びCtrl+Yやスペース、エンターで決定します。
キーマップに慣れない場合は ~/.config/nvim/init.vim
に下記の設定を追記することで↓↑矢印キーで候補選択、エンターで決定に変更することができます。
" Completion
set completeopt=menuone,noinsert
inoremap <expr><CR> pumvisible() ? "<C-y>" : "<CR>"
inoremap <expr><C-n> pumvisible() ? "<Down>" : "<C-n>"
inoremap <expr><C-p> pumvisible() ? "<Up>" : "<C-p>"
~/.config/nvim/init.vim は最終的に下記のようになりました。
let g:python_host_prog = $PYENV_ROOT.'/versions/neovim2/bin/python'
let g:python3_host_prog = $PYENV_ROOT.'/versions/neovim3/bin/python'
call plug#begin(stdpath('data') . '/plugged')
" Make sure you use single quotes
Plug 'nanotech/jellybeans.vim'
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
let g:deoplete#enable_at_startup = 1
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
call plug#end()
colorscheme jellybeans
" Completion
set completeopt=menuone,noinsert
inoremap <expr><CR> pumvisible() ? "<C-y>" : "<CR>"
inoremap <expr><C-n> pumvisible() ? "<Down>" : "<C-n>"
inoremap <expr><C-p> pumvisible() ? "<Up>" : "<C-p>"
手がvimで慣れてしまっていて今後はNeoVimを使っていくという人は ~/.bashrc や~/.zshrc に下記のようにエイリアスを記述しておくと便利です。
alias vim='nvim'
追記したら忘れずにsource ~/.zshrc
するかターミナルを一度閉じて開きなおしておきましょう。
以上です。
このエントリでは、NeoVimをanyenv/pyenvを使ってPythonにパスを通しつつMacにインストールして自動補完プラグインを有効にするまでの手順を紹介しました。
コメントを送る
コメントはブログオーナーのみ閲覧できます