30
24

More than 5 years have passed since last update.

Neovim構築メモ

Posted at

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とプラグインのインストールまで行ってくれます。

30
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
24