雑記帳

情報を自分の言葉で蓄積しておく場所

dotfilesを育て始めた話 その2 (vim編) + おすすめプラグイン

はじめに

dotfilesを育て始めた話 その1 (dotbot編)の続き
vim周りの設定について

dein.vim

vimをより便利にするために,dein.vimというプラグインマネージャーを導入している.
現在の僕の設定はこちら
dotfiles/vim

dein.vimの導入

" dein detup
let s:dein_dir = $HOME . '/.vim/bundle'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

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)
  " Load and cached toml
  " all plugins listed in toml
  call dein#load_toml(s:dein_dir . '/rc/dein.toml', {'lazy': 0})
  call dein#load_toml(s:dein_dir . '/rc/dein_lazy.toml', {'lazy': 1})
  call dein#end()
  call dein#save_state()
endif

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

以上のコードをvimrc内に記述する.
これでvimを開くとdeinがない場合自動でdein.vimがインストールされる.

プラグインの導入の際は
if dein#load_state({path to plugin base path directory})
以下に
call dein#add({path to dein.vim directory})
として書き連ねていってもいいが, プラグインが増えてくるとvimrcが肥大化してしまうので

if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  " Load and cached toml
  " all plugins listed in toml
  call dein#load_toml(s:dein_dir . '/rc/dein.toml', {'lazy': 0})
  call dein#load_toml(s:dein_dir . '/rc/dein_lazy.toml', {'lazy': 1})
  call dein#end()
  call dein#save_state()
endif

とし,tomlにプラグインを記述した.
dein.tomlにはvim起動時から使いたいプラグインを,dein_lazy.tomlには特定のファイルなどを開くときにのみ読み込みたいプラグインをそれぞれ記述することにより,vimの起動を高速化した.

プラグインをgit管理しないようにする

今回,deinを含めたプラグインの保存先をgit管理している.vim内にしたため,
git add .
とかするとプラグインもgit管理される.
そうするとリポジトリ内にリポジトリが生成されることになり,またsubmodule扱いでもないため面倒なことになる. いちいちプラグイン以外を指定してcommitしたりpushするのも面倒なので,gitignoreに
vim/.vim/bundle/repos/github.com/
とか書いてプラグインの保存先はgitで管理しないようにしておく.

導入したプラグインたち

おすすめとか言いつつ面白そうだからとりあえず入れてるプラグインもいくつかあるので,使っているうちに最適化されていくはず.

dein.toml

Shougo/dein.vim
言わずと知れたプラグインマネージャー
 
Shougo/neosnippet.vim
スニペット表示用プラグイン.定型構文を一発入力できる.
これだけだとスニペットは表示されないので適宜必要なスニペットを追加します.
 
Shougo/neosnippet-snippets
基本的なスニペットが含まれたneosnippet用プラグイン
 
Shougo/neocomplete
優秀な補完プラグイン.必須と言っていいくらいおすすめ
 
itchyny/lightline.vim
vimのステータスバーをきれいに見やすくしてくれる.(リンク先参照)
 
tomasr/molokai
vimのカラースキーム
ちょっとカラフルすぎるという人もいるので好みに応じて使ってください.
 
scrooloose/nerdtree
atomsublimeのようにプロジェクトツリーを画面横に表示してくれるプラグイン
 
Xuyuanp/nerdtree-git-plugin
nerdtree上に表示されるファイル横にgitステータスを表示してくれる.
 
airblade/vim-gitgutter
vimの行横に+や-で差分を表示してくれる.
 

dein_lazy.toml

 

python

davidhalter/jedi-vim
python用の補完プラグイン
 
hdima/python-syntax
文字通り,pythonシンタックスハイライティングをしてくれる.
 

Go

fatih/vim-go
vim上でgofmtやgoimport, gobuildなどの操作ができる便利プラグイン
保存時の操作などと組み合わせると,保存時に自動でgofmtしたりできる.
 

js

jelera/vim-javascript-syntax
その名の通りjs用のシンタックスハイライティングプラグイン
 

html

othree/html5.vim
htmlの補完,インデント,シンタックスをまとめてやってくれる.便利.
 

css

hail2u/vim-css3-syntax
cssシンタックスプラグイン
 

ruby

tpope/vim-rails
vim上でrailsアプリケーション開発に必要なコマンドを実行できる. rakeとかconsole開いたりとか.
特に便利なのは対応したcontroller, model, viewに一発ジャンプできる機能.
 

toml

cespare/vim-toml tomlのシンタックスプラグイン
 

markdown

plasticboy/vim-markdown
シンタックスハイライトとスニペット(tableとか)表示的なことができるmarkdownプラグイン
 
kannokanno/previm
markdownのリアルタイムプレビューができるプラグイン.地味に便利.
 
tyru/open-browser.vim
ファイルのURIをブラウザで開いてくれるプラグイン,上のprevimと一緒に使うとプレビューの際に自動でブラウザを開いて表示してくれる.
 

まとめ

vimの設定(主にdein)について書いた.
プラグイン楽しい.