Enter

日々感じたことを記録するブログ

MacでVimからNeoVimに移行してみる

NeoVimとは

巷では、次世代のVimと言われているNeoVim。 公式のGithubを見てみると、

  • Vimリポジトリをforkしたプロジェクトである。
  • メンテナンスビリティの向上とコントリビュートを簡単に。
  • モダンなUIを備えていて、既存のVimと互換性あり、プラグインが利用可能。

とのこと。

Vimのパッケージ管理がNeoBundleを使っていて、これが作者から「もうオワコンだよ、今後はバグフィックスだけ更新するね」ってなっていることもあり、NeoVim + dein.vimで環境を作り直すことに決めた。

インストール

さっそく、NeoVimをインストールしましょう。

$ brew install neovim
$ nvim -v
NVIM v0.3.3
Build type: Release
...

簡単!😁

プラグイン管理マネージャー: dein.vim 導入

Shougo/dein.vim: Dark powered Vim/Neovim plugin manager

闇の力を利用した最強のプラグインマネージャーdein.vimを導入しましょう。 こちらも簡単で、↓の様にshellスクリプトを落としてきて、実行するだけ。

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
# ~/.cache/deinにプラグインのソースコードが入ってくる。パスは任意です。
sh ./installer.sh ~/.cache/dein

次に、NeoVimの設定ファイルを作っていきます。 NeoVimでは、XDG Base Directoryに対応しているので、~/.config/nvim/init.vimに書いていきます。 dotfileが大量発生してしまっているので、ツールごとにディレクトリにまとめる仕様になったと簡単に理解しています。 Vimと互換性があるので、 .vimrcを使ってもいいのですが、かなりカオスになっているので移行と同時にさよならします。😇

XDG Base Directoryを環境変数として設定しておく場合はこんな感じ。

# fish shell 
set XDG_CONFIG_HOME ~/.config

# bash shell 
export XDG_CONFIG_HOME=~/.config

~/.config/nvim/init.vim に設定を記入していきます。
その前に、ディレクトリを作っておきましょう。
mkdir -p ~/.config/nvim/

↓がinit.vimの内容です。 一部プラグインの設定が入っていますが、インストールするものについては次に説明します。

set number             "行番号を表示
set autoindent         "改行時に自動でインデントする
set tabstop=2          "タブを何文字の空白に変換するか 
set shiftwidth=2       "自動インデント時に入力する空白の数
set expandtab          "タブ入力を空白に変換
set clipboard=unnamed  "yank した文字列をクリップボードにコピー
set hls                "検索した文字をハイライトする
set termguicolors      "TrueColor対応"

"========================================="
" plugin Manager: dein.vim setting
"========================================="
if &compatible
  set nocompatible
endif

" プラグインが実際にインストールされるディレクトリ
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/rc')
  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

let g:dein#install_max_processes = 16

"========================================="
" setting
"========================================="
filetype plugin indent on

syntax enable
colorscheme one
let g:airline_theme = 'one'
" powerline enable(最初に設定しないとダメ)
let g:airline_powerline_fonts = 1
" タブバーをかっこよく
let g:airline#extensions#tabline#enabled = 1
" 選択行列の表示をカスタム(デフォルトだと長くて横幅を圧迫するので最小限に)
let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v'])
" gitのHEADから変更した行の+-を非表示(vim-gitgutterの拡張)
let g:airline#extensions#hunks#enabled = 0

プラグインの追加

dein.vimでは設定ファイルを別ファイルから読み込むことができるので、プラグイン管理ファイルを作成しておく。

$ mkdir -p  $XDG_CONFIG_HOME/nvim/rc/
$ touch $XDG_CONFIG_HOME/nvim/rc/dein.toml
$ touch $XDG_CONFIG_HOME/nvim/rc/dein_lazy.toml

使うプラグインdein.tomlに記述していきます。

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/deoplete.nvim'

[[plugins]]
repo = 'rakr/vim-one'

[[plugins]]
repo = 'vim-airline/vim-airline'

[[plugins]]
repo = 'airblade/vim-gitgutter'

そのあと、nvimで起動すると、自動的にプラグインを読み込んでくれます。設定後の画面はこんな感じになります。 f:id:enter178:20190113113249p:plain