Adways Advent Calendar 13日目の記事です。
http://blog.engineer.adways.net/entry/advent_calendar/archive
どうもこんにちは!入社1年目インフラの奥村です。
今日はタイトルの通り
Re:ゼロから始めるvim拡張生活をしていきたいと思います。
Re:ゼロから始める異世界生活というアニメが超面白くてとても影響を受けた人物の一人です。
このアニメは主人公の少年が突如異世界に飛ばされ、死に戻り(死んで時間を戻す力)を使って様々な困難に立ち向かっていくという物語です。
と、急なアニメの紹介はさておき、
僕は会社に入るまでvimを使ったことがありませんでした。もちろんEmacsも使ったことがありませんでした。今でもEmacsがどういうものかわかっていません。僕にとってvimは異世界だったのです。
使い始めて8ヶ月間標準のvimしか使ってこなかったので、そろそろ拡張しようと思いvim advent calenderを読んでいると
こちらの記事でvim bootstrapなるものが紹介されていました。
http://vim-bootstrap.com/ (vim bootstrapのURL)
vim bootstrapを使うと選択した言語に適した.vimrc
を作成してくれるのです!
とりあえずvim bootstrapを利用し、強化された.vimrc
をながめてvim拡張の世界に飛び込んでいこうと考えました。
いろいろいじった末に設定ミスって元にもどせなかったら嫌だなと思い、vim bootstrapで作成されたvimrc
を初期状態にもどすansibleを書きました。
今回は best practiceに合わせるためvimのroleを作りました。
ファイル構成
構成はこのようになりました
├── files │ └── vimrc #何も書いていないvimrc └── tasks ├── get_vimrc.yml #vim bootstrapで作成されるvimrcをダウンロードしてくるタスク └── main.yml
group_vars/all
--- vim: bootstrap: active: True use: python download_vimrc: - javascript - perl - python - ruby plane: insert: - "set nonumber" - "syntax on" - "set tabstop=4" - "set expandtab"
ansible
中身はこんな感じです
taska/main.yml
--- - name: Install vim by yum yum: name=vim state=present - block: - name: get .vimrc files include: get_vimrc.yml - name: copy .vimrc copy: src={{ vim.bootstrap.use }} dest=~/.vimrc - name: PlugInstall shell: bash -lc "vim +PlugInstall +qall" become: no when: vim.bootstrap.active == True #vim bootstrapを使うならこのブロックが適用される - block: - name: copy default vimrc copy: src=vimrc dest=~/.vimrc - name: insert farst settings lineinfile: line={{ item }} dest=~/.vimrc insertafter=yes with_items: "{{ vim.plane.insert }}" become: no when: vim.bootstrap.active == false #vim bootstrapを使わないならこのブロックが適用される
vim bootstrapを使う場合とvim bootstrapを使わない場合で分けれるようにしました。
vim.bootstrap.active
で True
かFalse
で使い分けるようにします。
tasks/get_vimrc.yml
--- - name: get vimrc files become: no local_action: shell bash -lc "curl 'http://vim-bootstrap.com/generate.vim' --data 'langs={{ item }}&editor=vim' > {{ playbook_dir }}/roles/vim/files/{{ item }}" with_items: "{{ vim.bootstrap.download_vimrc }}"
vim bootstrapはcurlで落としてくることができるので
vim.bootstrap.download_vimrc
でダウンロードしてくるvimrcを指定できるようにします。
上記のvarsファイルだと
── files ├── javascript ├── perl ├── python ├── ruby └── vimrc
こんな感じになります。
vim bootstrapを使わない場合のvimrc
はvim.plane.insert
に書いた設定を一行一行追加していくようになっています。
さぁこれで準備はできました。
拡張のためにいろいろ編集した.vimrc
をfilesのvimrcに上書きすれば良いのです。そしてそのvimrcをgit管理すればバージョン管理もできますね。
さらに作ってから気づいたんですが、ansibleで初期状態に戻したりできることによって複数のマシンで同じ拡張のvimが使えるようになるんです!
実行
今回はvim bootstrapでpython用のvimrcを有効化したいと思います。
vim.bootstrap.active: True vim.bootstrap.use: python
こうなるようにvarsファイルをセット そしてansibleを実行すると
これから
になりました!
まとめ
僕はこれで、間違って進んでしまったvim拡張を元の状態に戻すことができるようになりました。vimrcが死に戻りするわけですね。
まずは、vim bootstrapのvimrcを眺めたり変更したりしていきたいとおもいます。
さぁ始めよう!
ゼロから始める異世界(vim)生活を!
次は菊池さんの記事です。