neovimの説明などは他の投稿やneovimを御覧ください。
概要
- コピペしていくとneovimの環境が整う
- neovimから採用されたtomlファイルによるプラグイン管理を試してみる
自身の環境
OS: OS X Yosemite 10.10.5
Shell: Zsh
インストール
インストールについてはNeoVim と dein.vim を使ってみる!を参考にしました。
まずはneovimのインストール
$ brew install neovim/neovim/neovim
インストール後には nvim というコマンドが使えるようになります。
deopleteという補完のプラグインにはpython3が必要ですのでpython3が入ってない方は入れましょう。pipを用いてneovimをインストールします。
$ brew install python3
$ pip3 install neovim
deopleteとは "dark powered neo-completion"の省略らしいです。か、かっこいいですね。
続いて
$ nvim
のようにとりあえずneovimを開いてみてノーマルモード状態で:echo has("python3")
と打ってみます。1
という結果が表示されるとOKです。
設定
シェルによりますが私はzshを使用しているので.zshrc
にXDG_COONFIG_HOMEを設定します。
export XDG_CONFIG_HOME=~/.config
次にviでいうところの.vimrc
を設定します。
neovimでは$XDG_CONFIG_HOME/nvim
配下にinit.vim
という名前で設定ファイルを記述するのが良いそうです。
参考: NeoVimの.nvimrcの場所が変更された
後で必要になるプラグインを管理するファイルを事前に作っておきましょう。
$ touch $XDG_CONFIG_HOME/nvim/dein.toml
$ touch $XDG_CONFIG_HOME/nvim/dein_lazy.toml
init.vim
現時点での私のinit.vimを貼っておきます。大部分をNeoBundle から dein.vim に乗り換えたら爆速だった話から引用いたしました。
" 行数
set number
set noswapfile
" insertモードから抜ける
inoremap <silent> jj <ESC>
inoremap <silent> <C-j> j
inoremap <silent> kk <ESC>
inoremap <silent> <C-k> k
filetype indent on
set tabstop=2
set shiftwidth=2
set expandtab
" プラグインがインストールされるディレクトリ
let s:dein_dir = expand('~/.cache/dein')
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" dein.vim がなければ github から落としてくる
if &runtimepath !~# '/dein.vim'
if !isdirectory(s:dein_repo_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
endif
execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
endif
" 設定開始
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" プラグインリストを収めた TOML ファイル
" 予め TOML ファイルを用意しておく
let g:rc_dir = expand("~/.config/nvim/")
let s:toml = g:rc_dir . '/dein.toml'
let s:lazy_toml = g:rc_dir . '/dein_lazy.toml'
" TOML を読み込み、キャッシュしておく
call dein#load_toml(s:toml, {'lazy': 0})
call dein#load_toml(s:lazy_toml, {'lazy': 1})
" 設定終了
call dein#end()
call dein#save_state()
endif
" もし、未インストールものものがあったらインストール
if dein#check_install()
call dein#install()
endif
vimではNeoBundleを使用してしましたが、neovimではdein.vim
を使用することにしました。上記のinit.vim
をコピペすると問題なくdein.vim
を取ってくるようになっています。
init.vim
では.vimrc
と同様の書き方で jj
でインサートモードを抜けるですとか, tabのサイズを指定するといったことが可能です。
dein.toml
さきほどのinit.vim
内にプラグインの情報はdein.toml
から読み取るといったことが書かれています。
別ファイルでプラグインを管理できるのでinit.vim
がすっきりして良いですね。
deopleteを導入するためのdein.toml
を以下に記載します。
[[plugins]]
repo = 'Shougo/deoplete.nvim'
hook_add = 'let g:deoplete#enable_at_startup = 1'
hookの使い方は[dein.vim] hook の便利な使い方
を参考にしました。
基本的には repo = レポジトリ名 と hookを組み合わせるとほとんどのプラグインの設定が書けるはずです(たぶん)。
上記の投稿を参考にして作ったものですが、現状での自身のdein.tomlを貼っておきます。
[[plugins]]
repo = 'Shougo/dein.vim'
[[plugins]]
repo = 'Shougo/vimproc.vim'
hook_post_update = '''
if dein#util#_is_windows()
let cmd = 'tools\\update-dll-mingw'
elseif dein#util#_is_cygwin()
let cmd = 'make -f make_cygwin.mak'
elseif executable('gmake')
let cmd = 'gmake'
else
let cmd = 'make'
endif
let g:dein#plugin.build = cmd
'''
[[plugins]]
repo = 'thinca/vim-quickrun'
hook_post_update = '''
let g:quickrun_config = {'*': {'hook/time/enable': '1'},}
'''
[[plugins]]
repo = 'Shougo/deoplete.nvim'
hook_add = 'let g:deoplete#enable_at_startup = 1'
[[plugins]]
repo = 'cespare/vim-toml'
これで設定は以上です。
問題なく設定が終わっていれば、deopleteのリボジトリのREADMEにあるような補完ができるはずです。