丘と水路と橋と火を

言葉と技術

dein.vimのインストール&プラグイン導入

dein.vim

vimプラグインマネージャー。

⚡️ Dark powered Vim/Neovim plugin manager
Shougo/dein.vim

vimに闇の力を与えるため、dein.vimを導入する。

導入手順

# deinで利用するためのフォルダを作成する。
mkdir -p ~/.cache/dein
cd ~/.cache/dein

# dein.vimのインストールスクリプトを導入(curlを利用)。
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.cache/dein

installer.shがうまく動作すると、「"dein Scripts----」という一文から始まるスクリプトが表示される。
「"End dein Scripts--」という行までをコピーして保管する。
vi ~/.vimrcとしてvimrcを開き、コピーしたスクリプトをvimrcの先頭に挿入する。

vimを起動してみる。うまく設定されていればdeinがインストールされる。

vimのバージョンが古いと……

もしも以下のようなエラーが表示されたら、vimのバージョンが古い可能性がある。

function dein#begin..dein#util#_begin..dein#util#_error..<SNR>11_msg2list の処理中にエラーが検出されました:
行    1:
E121: 未定義の変数です: v:t_list
E15: 無効な式です: type(a:expr) ==# v:t_list ? a:expr : split(a:expr, '\n')
function dein#begin..dein#util#_begin..dein#util#_error の処理中にエラーが検出されました:
行    1:
E714: リスト型が必要です
続けるにはENTERを押すかコマンドを入力してください

root権限で以下のコマンドを実行する。

# リポジトリを追加
curl -L https://copr.fedorainfracloud.org/coprs/unixcommunity/vim/repo/epel-7/unixcommunity-vim-epel-7.repo -o /etc/yum.repos.d/unixcommunity-vim-epel-7.repo

# vimがインストールされている場合にはupdate
yum update vim*

# vimをまだインストールしていなかった場合にはinstall
yum install vim

上記を行なったら、もう一度目的のユーザーにスイッチしてviを立ち上げてみる。

deinでのプラグインの導入

.vimrc内の「Add or remove your plugins here like this」というコメントの位置に、call dein#add('【PluginName(gitのリポジトリ名である場合が多い)】')プラグインを導入するのが基本的な利用方法。

しかし、プラグインを別ファイル(tomlファイル)で管理すると、より便利。

まず、mkdir -p ~/.vim/rcとして、deinによって導入するプラグインの格納場所をつくる。

次に以下を参考に、.vimrc先頭に記載したdein.vimの設定を編集する。

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=【ユーザーのホームディレクトリまでのパス】/.cache/dein/repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('【ユーザーのホームディレクトリまでのパス】/.cache/dein')
  " XDG base direcory compartible
  let g:dein#cache_directory = $HOME . '/.cache/dein'

  call dein#begin('【ユーザーのホームディレクトリまでのパス】/.cache/dein')

  " Let dein manage dein
  " Required:
  call dein#add('【ユーザーのホームディレクトリまでのパス】/.cache/dein/repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here like this:
  "call dein#add('Shougo/neosnippet.vim')
  "call dein#add('Shougo/neosnippet-snippets')

  " ~~~ ここからtomlファイルを利用するための設定 ~~~
  " 導入するプラグインを記載したtomlファイルのパスを記載する
   let s:toml_dir  = $HOME . '/.vim/rc' 
   let s:toml      = s:toml_dir . '/dein.toml'
   let s:lazy_toml = s:toml_dir . '/dein_lazy.toml'
  
   " tomlファイルをキャッシュしておくための記述
   call dein#load_toml(s:toml,      {'lazy': 0})
   call dein#load_toml(s:lazy_toml, {'lazy': 1})
  " ~~~ tomlのための設定はここまで ~~~

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

.vim/rc配下に、dein.toml(通常の読み込みを行うプラグインのリストファイル)とdein_lazy.toml(遅延読み込みを行うプラグインのリストファイル)を作成する。

tomlファイルは、例として以下のように記載する。

" repoで読み込みたいプラグインのGithubのリポジトリを指定する。
[[plugins]]
repo = 'Shougo/vimproc.vim'

[[plugins]]
repo = 'tpope/vim-fugitive'

" hookを利用することで、プラグインの読み込みと同時に行いたい処理を設定できる。
[[plugins]]
repo = 'jacoborus/tender.vim'
hook_add = '''
    colorscheme tender
    syntax on
'''

hookについては、[dein.vim] hook の便利な使い方が参考になる。

参考

dein.vimのインストール自体にハマってしまったメモ
CentOS 7 に vim 8 を導入する方法
dein.vim:tomlファイルでプラグイン管理する
[dein.vim] hook の便利な使い方

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vimテクニックバイブル ?作業効率をカイゼンする150の技