ChefでVimプラグインマネージャーvim-plugを設置する。


## 関連記事

* [Chefを使ってより効率的にサーバを管理しよう。まずは用語から](http://qiita.com/park-jh/items/9e2e358d2e82a7736cf7)
* [Berkshelfを使って外部クックブックをノードに適用する。](http://qiita.com/park-jh/items/751464a4cc6d8abcd6fd)
* [クックブックを作成してノードに適用する。- その１](http://qiita.com/park-jh/items/8d641809850b5930d39c)
* [クックブックを作成してノードに適用する。- その２](http://qiita.com/park-jh/items/88237342cfd202e6893f)
* [ChefでCentOS 6.7 + rbenv + ruby 2.3.0の環境を構築する。](http://qiita.com/park-jh/items/f249a18793899f2eb4bf)
* [ChefでCentOS 6.7 + Vim 7.4 + luaを設置する。](http://qiita.com/park-jh/items/371d179d5e71618a1f14)
* [ChefでVimプラグインマネージャーNeoBundleを設置する。](http://qiita.com/park-jh/items/ec09e40f9b4aaf9fedfd)
* [Chefのレシピをデバッグしてみよう。](http://qiita.com/park-jh/items/96a076e167327a6a5a39)
* [ChefでCentOS 6.7 + nginxを設置する。- 外部クックブック](http://qiita.com/park-jh/items/3013c49494e524fced31)
* [ChefでCentOS 6.7 + nginxを設置する。- カスタムクックブック](http://qiita.com/park-jh/items/43451cea21ee1724c24b)
* [ChefでCentOS 6.7 + nodejs + npmを設置する。](http://qiita.com/park-jh/items/96089e7e1c97b0fe3a6c)
* ChefでVimプラグインマネージャーvim-plugを設置する。
* [ohaiのカスタムプラグインを作ってみよう。](http://qiita.com/park-jh/items/34be55abb7c63b36cddb)
* [Chef SoloからChef Zeroへ](http://qiita.com/park-jh/items/44c249c9de768c53b423)
* [Chefでnginx + php(php-fpm) + mariadb + wordpressを設置する。](http://qiita.com/park-jh/items/7515e47dddc38257a454)

## vim-plugについて

* vim-plugの詳細については下記の記事を参考にして欲しい。
* [NeoBundleからvim-plugへ](http://qiita.com/park-jh/items/226fdc6c6ea7a7598616)

## クックブックの修正

* NeoBundleからvim-plugに切り替えたので、既存レシピを修正した。
* site-cookbooks/vim-plugin/recipes/default.rb

```ruby
package "vim" do
  action :install
end

directory "/home/#{node['user']}/.vim" do
  owner node['user']
  group node['group']
  mode '0755'
  action :create
end

%w(backup swap).each do |dir|
  directory "/home/#{node['user']}/.vim/#{dir}" do
    owner node['user']
    group node['group']
    mode '0755'
    action :create
  end
end

execute 'install vim-plug' do
  user node['user']
  group node['group']
  cwd "/home/#{node['user']}"
  environment 'HOME' => "/home/#{node['user']}"
  command "curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
  not_if { File.exists?("/home/#{node['user']}/.vim/autoload/plug.vim") }
end

%w(.vimrc_scss_indent .vimrc).each do |file|
  cookbook_file "/home/#{node['user']}/#{file}" do
    owner node['user']
    group node['group']
    mode '0644'
  end
end

execute 'install vim plugin via vim-plug' do
  user node['user']
  group node['group']
  cwd "/home/#{node['user']}"
  environment 'HOME' => "/home/#{node['user']}"
  command "vim -c 'set shortmess=at' +PlugInstall! +qall"
  not_if { File.exists?("/home/#{node['user']}/.vim/plugged") }
end
```

* [以前の記事](http://qiita.com/park-jh/items/96a076e167327a6a5a39#%E5%95%8F%E9%A1%8C%E7%82%B9)で誤りがあった。
* user、group、environmentを指定するとそのユーザで実行される。
* むしろsudoでユーザを指定してコマンドを実行するとrootとvagrant（ユーザ）でコマンドが２回実行された。（ゲスト上でpsコマンドで確認）
* colorschemeのプラグインが設置されていない状態でcolorschemeを指定するようになりエラーが発生してvimコマンドの実行が止まってしまうのが問題だった。

## .vimrcの修正

* プラグインの管理のためvim-plugを使うように修正した。
* colorschemeを指定する部分をコメントアウトした。
* https://github.com/devtopia/chef/blob/vim-plugin/site-cookbooks/vim-plugin/files/default/.vimrc

## 追記

* colorschemeをコメントアウトしておいたが、そのままだと手作業で修正する必要があるし、冪等性によりknife soloを実行するたびにコメントアウトされている状態に戻る。
* Vim Pluginを設置した後に、次のリソースを追加してcolorschemeを活性化した。

```ruby
... snip ...
execute 'install vim plugin via vim-plug' do
  user node['user']
  group node['group']
  cwd "/home/#{node['user']}"
  environment 'HOME' => "/home/#{node['user']}"
  command "vim -c 'set shortmess=at' +PlugInstall! +qall"
  not_if { File.exists?("/home/#{node['user']}/.vim/plugged") }
end

# ここが追加された部分
execute 'enable colorscheme' do
  user node['user']
  group node['group']
  cwd "/home/#{node['user']}"
  environment 'HOME' => "/home/#{node['user']}"
  command "sed -i -e 's/\" colorscheme mopkai/colorscheme mopkai/' .vimrc"
end
```

* supermomonga/neocomplete-rsense.vimがgithubから無くなり設置が失敗するので、コメントアウトした。

## 参考

* https://github.com/Shougo/neobundle.vim
* https://github.com/junegunn/vim-plug