こちらはフロムスクラッチ Advent Calendar 2017の4日目の記事です。
はじめに
- 普段はIDEやAtomなどを全く使わず、VimでRubyやらJavaScriptを書いています。
- 実践Vimを読んだものの、思考のスピードで編集できるほどのVim力はないです。
やりたいこと
- literally the future of vim(直訳:文字通りvimの未来)と強気なNeovimを使ってみたい。
- 2年前からメンテしていなくてぶっちゃけ重い.vimrcをキレイにしたい。
- NeoBundleからとりあえずdein.vimに乗り換えた状態なので、使いこなしたい。具体的にはプラグインのTOML化を目指す。
環境
- MacBook Pro(Retina, 13-inch, Early 2015)
- macOS High Sierra Version 10.13.1
- Homebrewは導入済み
NeoVimのインストール
まず最初にNeoVimをHomebrewを使ってインストールします。
$ brew install neovim$ nvim
設定ファイルのパス
デフォルトだと~/.config/nvim/init.vim
を読み込むようです。
僕はそういった類いのものはdotfiles
でまとめて管理しているので、.zshrc
に以下の記述を足しました。
こうすることで~/dotfiles/nvim/init.vim
が設定ファイルになります。
.zshrc
exportXDG_CONFIG_HOME=$HOME/dotfiles
設定ファイルとの戦い
dein.vimリポジトリのgit clone
任意のディレクトリにdein.vimをgit cloneします。
$ mkdir -p ~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vim$ git clone git@github.com:Shougo/dein.vim.git \
~/.vim/dein/repos/github.com/Shougo/dein.vim
nvim/init.vimへの設定追加
ミニマルな設定をinit.vimに追加しました。
~/dotfiles/nvim/init.vim
" dein.vimによるプラグイン管理if&compatiblesetnocompatibleendif" dein.vimのclone先を指定するsetruntimepath+=~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vimcall dein#begin(expand('~/dotfiles/.vim/dein'))call dein#add('Shougo/dein.vim')call dein#add('Shougo/vimproc.vim', {'build': 'make'})" 補完、スニペットcall dein#add('Shougo/neocomplete.vim')call dein#add('Shougo/neosnippet')" その他必要なプラグインはこちらに追加するcall dein#end()
一度NeoVimを終了し、再度立ち上げてから:call dein#install()
でプラグインのインストールができます。
ここまででdein.vimの導入は終了です。
プラグインのTOML化
プラグインをTOMLにして別ファイルで管理ができるようなので、こちらを試してみます。
~/dotfiles/nvim/init.vim
" dein.vimによるプラグイン管理if&compatiblesetnocompatibleendif" dein.vimのclone先を指定するsetruntimepath+=~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vimlet s:dein_dir = expand('~/dotfiles/.vim/dein')if dein#load_state(s:dein_dir)call dein#begin(s:dein_dir)call dein#load_toml(s:dein_dir . '/plugins.toml', {'lazy': 0})call dein#load_toml(s:dein_dir . '/lazy.toml', {'lazy': 1})call dein#end()call dein#save_state()endif
init.vimはこんな感じに書き換える。
~/dotfiles/.vim/dein/plugins.toml
[[plugins]]repo='Shougo/dein.vim'[[plugins]]# 非同期処理repo='Shougo/vimproc.vim'[[plugins]]# colorschemarepo='chriskempson/vim-tomorrow-theme'[[plugins]]# slimのハイライトrepo='slim-template/vim-slim'[[plugins]]# ES6のハイライトrepo='othree/yajs.vim'[[plugins]]# インデントを見やすくrepo='Yggdroot/indentLine'[[plugins]]# j,kによる移動を爆速にrepo='rhysd/accelerated-jk'
~/dotfiles/.vim/dein/lazy.toml
[[plugins]]# 補完repo='Shougo/neocomplete.vim'[[plugins]]# スニペットrepo='Shougo/neosnippet'[[plugins]]# スニペットrepo='Shougo/neosnippet-snippets'[[plugins]]# メソッドの定義元にジャンプrepo='szw/vim-tags'[[plugins]]# Rubyのend補完repo='tpope/vim-endwise'[[plugins]]# ローカル変数ハイライトrepo='todesking/ruby_hl_lvar.vim'
これでプラグイン管理が相当スッキリしました。
2年間放置していた.vimrcがかなりキレイになりました。
終わりに
- NeoVim導入してみたけど、通常のVimと比べてすごい!!感動する!!という感じはない。
- プラグインを色々入れては見るものの、普段からよく使っているものは少ないから定期的に整理したい。
- .vimrc(init.vim)がかなり整理できたのが収穫。