Neovim導入メモ
VimからNeovimに移行完了したので、自分用のNeovim環境構築の備忘録です。
とりあえず設定のベース作りとdeinでプラグイン管理できるところあたりまで。
全体的に設定を省略していますが、気になる方がいましたらこちらのリポジトリを参考にしてください。
https://github.com/choco-kei/dotfiles/tree/neovim/config/nvim
Neovimをインストール
Mac環境なのでHomebrewを使ってインストール。
$ brew install neovim
Mac以外の方はこちらを参照。
https://github.com/neovim/neovim/wiki/Installing-Neovim
インストール後のチェック
Neovimを起動
$ nvim
Neovim上で:checkhealth
を実行
エラーが出ている場合はメッセージを読んで対応。
設定ファイル作成
Vimと違い~/.config/以下に設定ファイルが置かれるので必要なものを一通り用意。
$ cd ~/
$ mkdir .config
$ mkdir .config/nvim
$ mkdir .config/nvim/plugins
$ touch .config/nvim/init.vim
$ touch .config/nvim/options.rc.vim
$ touch .config/nvim/keymap.rc.vim
$ touch .config/nvim/dein.toml
$ touch .config/nvim/deinft.toml
$ touch .config/nvim/deinlazy.toml
$ tree .config/nvim/
~/.config/nvim/
├── dein.toml
├── deinft.toml
├── deinlazy.toml
├── functions.rc.vim
├── init.vim
├── keymap.rc.vim
├── options.rc.vim
├── options.rc.vim
└── plugins/
init.vim
Neovim設定本体、とりあえず基本的な設定とdeinとTrueColorの設定。
あとは分割した設定の読み込みなど。
if &compatible
set nocompatible
endif
augroup MyAutoCmd
autocmd!
augroup END
" True Color対応
if has('nvim')
" For Neovim 0.1.3 and 0.1.4
let $NVIM_TUI_ENABLE_TRUE_COLOR=1
" Or if you have Neovim >= 0.1.5
if (has("termguicolors"))
set termguicolors
endif
elseif has('patch-7.4.1778')
set guicolors
endif
let s:dein_cache_path = expand('~/.cache/nvim/dein')
let s:dein_dir = s:dein_cache_path
\ .'/repos/github.com/Shougo/dein.vim'
if &runtimepath !~ '/dein.vim'
if !isdirectory(s:dein_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_dir
endif
execute 'set runtimepath+=' . fnamemodify(s:dein_dir, ':p')
endif
if dein#load_state(s:dein_cache_path)
call dein#begin(s:dein_cache_path)
call dein#load_toml('~/.config/nvim/dein.toml', {'lazy' : 0})
call dein#load_toml('~/.config/nvim/deinlazy.toml', {'lazy' : 1})
call dein#load_toml('~/.config/nvim/deinft.toml')
call dein#end()
call dein#save_state()
endif
if dein#check_install()
call dein#install()
endif
filetype plugin indent on
syntax enable
runtime! ./options.rc.vim
runtime! ./keymap.rc.vim
runtime! ./functions.rc.vim
options.rc.vim
Neovimのオプションset hoge
系はこちらに記述。
" 編集中でもファイルを開けるように
set hidden
" 他で編集したファイルを自動で再読み込み
set autoread
" スクロール時の余白行数
set scrolloff=5
set sidescrolloff=6
" バックアップを作成しない
set nobackup
" 長くなるので省略。。。
keymap.rc.vim
キーマップ設定はこちらに記述。
" Ctrl + hjkl でウィンドウ間を移動
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Shift + 矢印でウィンドウサイズを変更
nnoremap <S-Left> <C-w><
nnoremap <S-Right> <C-w>>
nnoremap <S-Up> <C-w>-
nnoremap <S-Down> <C-w>+
" 長くなるので省略。。。
functions.rc.vim
独自コマンド等はこちらに記述。
" jsonを整形
command! JsonFormat :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)).encode(\"utf-8\"), sys.stdin.read()))"'
\ | :set ft=json
\ | :1
" 長くなるので省略。。。
dein.toml
読み込むプラグインの設定。
プラグイン毎の設定は~/.config/nvim/plugins/以下に。
細かい記述方法とかはdeinのマニュアル参照。
[[plugins]]
repo = 'Shougo/dein.vim'
[[plugins]]
repo = 'cocopon/iceberg.vim'
hook_add = '''
source ~/.config/nvim/plugins/color_iceberg.rc.vim
'''
# 長くなるので省略。。。
deinlazy.toml
遅延ロードするプラグインの設定。
[[plugins]]
repo = 'Shougo/context_filetype.vim'
[[plugins]]
repo = 'Shougo/deoplete.nvim'
depends = 'context_filetype.vim'
if = "has('nvim')"
on_i = 1
hook_source = '''
source ~/.config/nvim/plugins/deoplete.rc.vim
'''
[[plugins]]
repo = 'Shougo/neco-vim'
[[plugins]]
repo = 'Shougo/neoinclude.vim'
on_if = 1
# 長くなるので省略。。。
deinft.toml
ファイルタイプ毎の設定。
[ftplugin]
_ = '''
'''
vim = '''
setlocal shiftwidth=2 softtabstop=2
setlocal iskeyword+=:,#
'''
# 長くなるので省略。。。
Neovimを起動してdeinとプラグインをインストール
Neovimを起動すれば自動的にdeinとプラグインのインストールまで行ってくれます。