プラグインでVimに機能を追加する

本連載では、前回までにVimの基本的な操作や機能について紹介してきた。これまでに説明した操作方法を身に付ければVimでかなり高速にテキストの編集作業ができるようになるはずだ。慣れるまでは大変だが、いったん慣れてしまえば有益なツールであり続けてくれる。

基礎を身に付けた今、次のステップはいくつかあるが、ここではプラグインについて取り上げておこうと思う。Vimにはプラグインと呼ばれるサードパーティ製のVimスクリプトを読み込むことで機能を拡張する仕組みが用意されている。現在、VimプラグインのほとんどはGithub.comでホストされているので、そこから「git clone」して「git pull」しておけば利用できる。Vimそのものにプラグイン用のデプロイ構造も用意されているので、その仕組みに従ってデプロイしてもよい。

ただし、現在Vimに導入されているプラグイン管理機能は必要最低限のもので、自動的に管理してくれるものではない。こうした機能を補う目的で、以前から「プラグインマネージャ」と呼ばれるVimのプラグインが使われてきた。プラグインマネージャはプラグインの自動インストールや自動アップデートなどの機能を提供しており、一度セットアップしてしまえば後はおまかせで利用できるという便利さがある。

Vimには有名なプラグインマネージャがいくつか存在している。好みで使ってもらえばよいのだが、今回は「Dein.vim」というプラグインマネージャを紹介しよう。

Dein.vim

Dein.vimはVimおよびNeovim向けのプラグインマネージャだ。ほかのプラグインマネージャと比較してシンプルで高速、一旦セットアップしてしまえば、その後利用するプラグインの追加やアップデートが簡単になるという特徴がある。

Dein.vim

Vimに標準で用意されているプラグイン管理機能は、Dein.vimほどは面倒を見てくれない。インストールやアップデートは自分で作業するのが基本的な扱い方だ。Dein.vimはそれ自体の扱いも簡単なので、プラグインを使い始める際はとりあえずDein.vimを使ってみるとよいだろう。

Dein.vimのインストール方法

Dein.vimをインストールするにはcurlコマンドとgitコマンドが必要だ。インストールされていないのであれば、Dein.vimのインストール前に用意しておいていただきたい。準備できたら、次のようにコマンドを実行してDein.vimのインストールを行う。 mkdir -p ~/.cache/dein cd ~/.cache/dein/ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh sh ./installer.sh . rm ./installer.sh

実行すると次のようになる。

Dein.vimインストール例

上記では、curlコマンドでDein.vimのインストールスクリプトをダウンロードし、インストールスクリプトを実行してDein.vimをGithub.comからダウンロードしている。この作業によって、~/.cache/dein/ディレクトリに次のようにDein.vimがデプロイされる。

Dein.vimのデプロイ状況

Dein.vimのインストールスクリプトを実行すると、標準出力に次のスクリプトが表示され、このスクリプトを「~/.vimrc」や「~/.config/nvim/init.vim」などの「先頭」に書き込むようにとの指示が出る。.vimrcはVim向けの設定ファイル、init.vimはNeovim向けの設定ファイルだ。

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

" Required:
set runtimepath+=/home/daichi/.cache/dein/./repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('/home/daichi/.cache/dein/.')
  call dein#begin('/home/daichi/.cache/dein/.')

  " Let dein manage dein
  " Required:
  call dein#add('/home/daichi/.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')

  " 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-------------------------

例えば、~/.vimrcファイルの先頭に次のように上記Dein.vimの設定を追加するわけだ。

Dein.vimの設定を追加した~/.vimrcファイルのサンプル

以上でDein.vimのインストールは完了だ。これで次にVimを起動するときからDein.vimが機能するようになる。

プラグインのインストール方法

Dein.vimを使ったプラグインのインストール方法は、基本的に先ほど書き込んだ設定にサンプルが記述されているので、それに従って作業を行うだけだ。コメントアウトされている次の2カ所のコメントをはずして有効化する。

     " Add or remove your plugins here like this:
      "call dein#add('Shougo/neosnippet.vim')
      "call dein#add('Shougo/neosnippet-snippets')
 " If you want to install not installed plugins on startup.
    "if dein#check_install()
    "  call dein#install()
    "endif
前者には利用するプラグインを指定する。
  " Add or remove your plugins here like this:
  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')

一方後者では、自動インストールを有効化する。

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

コメントを削除した後の~/.vimrc

2つ目の「call dein#install()」の処理で、起動時にインストールされているプラグインがインストールされていなかった場合に自動的にインストールが行われるようになる。便利なのでこのまま自動インストールの機能は有効にしておく。

1つ目の「call dein#add(‘ユーザ名/リポジトリ名’)」は利用するプラグインの指定だ。ここではサンプルとして「Shougo/neosnippet.vim」と「Shougo/neosnippet-snippets」という2つのプラグインを使用することを指定していることになる。

例えばこの状態でVimを起動すると、次のようにVim起動時に自動的に指定した2つのプラグインのインストールが実行される。

Dein.vimによるプラグインの自動インストール中

インストール完了を知らせるプロンプト

動作を確認したら「call dein#add(‘Shougo/neosnippet.vim’)」と「call dein#add(‘Shougo/neosnippet-snippets’)」の行はコメントアウトしておけばよい。

以降は、自分の使いたいプラグインを探してきて、上記コメントの付近に「call dein#add(‘ユーザ名/リポジトリ名’)」の形式でGithub.comにホストされているVimのプラグインを指定すれば、次のVim起動時に自動的にインストールが行われる。

プラグインの活用が効率化の次のステップ

「こういう処理が欲しいんだけど」といった要望はすでにVimのプラグインというかたちで実装されていることが多い。つまり、便利なVimプラグインをどれだけ知っているかが、Vimを効率的に使えるかどうかにつながっていく。

もちろん欲しいプラグインが存在していないことだってある。そういう場合は、自分でVimスクリプトを書くことになるのだが、いかに楽をするためとはいえ、そこまでやるのは本連載の趣旨を外れることになるだろう。本連載では、プラグインを利用する辺りまでとしておきたい。