MacでVimからNeoVimに移行してみる
NeoVimとは
巷では、次世代のVimと言われているNeoVim。 公式のGithubを見てみると、
とのこと。
今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
で起動すると、自動的にプラグインを読み込んでくれます。設定後の画面はこんな感じになります。