vimプラグイン環境のインストールを自動化する

プラグインが未インストールの時に.vimrcの読み込みでエラーメッセージが出てくるのイケてないなーと思ってた。

neobundle.vim を使う。

.vimrcには、neobundleをインストールする記述は一切書かなくて、インストールしたいプラグインを羅列するだけでOK。
次に記載するインストールスクリプトを先に実行だけでプラグイン環境のインストール終わり。

[...]
" NEOBUNDLE_START
let s:neobundledir   = expand('~/.vim/bundle')
execute 'set runtimepath+=' . s:neobundledir . '/neobundle.vim'
call neobundle#begin(s:neobundledir)
  NeoBundle 'tpope/vim-rails'
  NeoBundle "unite.vim"
  NeoBundle 'scrooloose/nerdtree'
  NeoBundle 'taku-o/vim-toggle'
  NeoBundle 'easymotion/vim-easymotion'
  NeoBundle 'motemen/git-vim'
  NeoBundle 'Shougo/neocomplcache'
  NeoBundle 'surround.vim'
  NeoBundle 'vim-jp/vimdoc-ja'
  NeoBundle 'kchmck/vim-coffee-script'
  NeoBundle 'mattn/emmet-vim'
  NeoBundle 'slim-template/vim-slim'
  NeoBundle 'kana/vim-operator-user'
  NeoBundle 'tyru/operator-camelize.vim'
call neobundle#end()
" NEOBUNDLE_END
[...]

インストールスクリプト

#!/bin/sh

curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh
cp ~/.vimrc ~/.original_vimrc

<< EOH > ~/.vimrc
if 0 | endif
if &compatible
  set nocompatible
endif
set runtimepath^=~/.vim/bundle/neobundle.vim/
call neobundle#begin(expand('~/.vim/bundle/'))
  NeoBundleFetch 'Shougo/neobundle.vim'
call neobundle#end()
filetype plugin indent on
call feedkeys(" ")
NeoBundleInstall
EOH
vim -c q

ruby << EOH > ~/.vimrc
file = File.read File.expand_path("~/.original_vimrc")
file =~ /" NEOBUNDLE_START(.*?)" NEOBUNDLE_END/m
puts <<-RUBY_EOH
#{\$1}
call feedkeys(" ")
NeoBundleInstall
RUBY_EOH
EOH
vim -c q

cat ~/.original_vimrc > ~/.vimrc
rm ~/.original_vimrc

NeoBundleInstall を実行すると

Press Enter or type command to continue

が出て入力待ちになるので

call feedkeys(" ")

を入れている。
バックグラウンドにしたらsuspendしてしまうのはなんなんだろう。