LoginSignup
139
38

More than 5 years have passed since last update.

2018年に向けてNeoVim&dein.vimを整えた

Last updated at Posted at 2017-12-12

こちらはフロムスクラッチ 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

neovim初起動.png
こんな感じでNeovimを起動することができました。

設定ファイルのパス

デフォルトだと~/.config/nvim/init.vimを読み込むようです。
僕はそういった類いのものはdotfilesでまとめて管理しているので、.zshrcに以下の記述を足しました。
こうすることで~/dotfiles/nvim/init.vimが設定ファイルになります。

.zshrc
export XDG_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 \
    ~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vim

nvim/init.vimへの設定追加

ミニマルな設定をinit.vimに追加しました。

~/dotfiles/nvim/init.vim
" dein.vimによるプラグイン管理
if &compatible
  set nocompatible
endif

" dein.vimのclone先を指定する
set runtimepath+=~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vim

call 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 &compatible
  set nocompatible
endif

" dein.vimのclone先を指定する
set runtimepath+=~/dotfiles/.vim/dein/repos/github.com/Shougo/dein.vim

let 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]] # colorschema
repo = '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)がかなり整理できたのが収穫。
139
38
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
139
38