neovim
dein
TECOTECDay 18

Neovim構築メモ


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の設定。

あとは分割した設定の読み込みなど。


init.vim

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系はこちらに記述。


options.rc.vim

" 編集中でもファイルを開けるように

set hidden

" 他で編集したファイルを自動で再読み込み
set autoread

" スクロール時の余白行数
set scrolloff=5
set sidescrolloff=6

" バックアップを作成しない
set nobackup

" 長くなるので省略。。。



keymap.rc.vim

キーマップ設定はこちらに記述。


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

独自コマンド等はこちらに記述。


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のマニュアル参照。


dein.toml

[[plugins]]

repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'cocopon/iceberg.vim'
hook_add = '''
source ~/.config/nvim/plugins/color_iceberg.rc.vim
'''

# 長くなるので省略。。。



deinlazy.toml

遅延ロードするプラグインの設定。


dein.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

ファイルタイプ毎の設定。


deinft.toml

[ftplugin]

_ = '''
'''

vim = '''
setlocal shiftwidth=2 softtabstop=2
setlocal iskeyword+=:,#
'''

# 長くなるので省略。。。



Neovimを起動してdeinとプラグインをインストール

Neovimを起動すれば自動的にdeinとプラグインのインストールまで行ってくれます。