この記事はVim Advent Calendar 2016の1日目のエントリです。(同名のAdvent calendarが2つあるのにご注意ください。もう一つは http://qiita.com/advent-calendar/2016/vimです)
著者のujihisaはCanadaのVancouverにあるHootsuiteという会社で6年半ほど働いていて、そこでは主にScalaを書くなどしていました。そのHootsuiteを退職し、先月日本の東京に引越しをし、その後就職活動を行った結果、東京にあるFablicという会社に2017年から勤務するはこびとなりました。 そこでは主にRubyを使うことになるので、Rubyのための開発環境をまとめます。
前提として、著者はHootsuiteで働く前は主にRubyやHaskellを用いていたものの、Hootsuite在籍中は小さいスクリプトやMinecraft plugin作りに軽くRubyの短いコードを書く程度で、大規模なコードベースに触れる機会はありませんでした。
余談ながら、去年のVim Advent Calendar 2015とVim script Advent Calendar 2015の記事タイトル一蘭を見たところ、去年はVimとRubyの話題について言及した記事はないようでした。
https://github.com/vim-ruby/vim-ruby
VimによるRubyのための開発環境をまとめるというのは大嘘で、今回はまず基本に立ち返り、配布されているVimに同封されているvim-rubyを詳しくみてみましょう。 vim-rubyですでに提供されている機能については特に別個のプラギンを導入する必要がないわけで、まずこれをきちんと把握しておくことが大切です。
プラギン名がvim-rubyなので、まずは素直に:h ruby
を見てみましょう。
:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
:ruby print "Hello"
+ruby
なVimで使うあれです。どちらかというとプラギン製作者向けで、普段Vimを使うときにはこれよりもっと高レイヤであるquickrunを使いましょう。
ほかに:rub[y] <<
, :[range]rubyd[o]
, :rubyf[ile]
などがありますが、同じ扱いです。
なんかおかしいなとは思っていたのですが、実は:h ruby
はvim-rubyのhelpではなく+ruby
のものでした。まあ当たり前か。vim-rubyのhelpは:h vim-ruby
を見ましょう。
]m
などといった、]/[
とm/M
の組み合わせによる2キーのmotionがいくつか与えられています。
mのメソッドと角括弧のクラスと覚えておきましょう。
といいつつ実際には一つ次のメソッドとかにジャンプするのではなく、特定のメソッドにいきなり飛びたいときが多いので、unite-outlineの出番の方が多くなりそうな気もします。
g:ruby_indent_access_modifier_style
をいじることで、コードベース内のRubyのインデントの各慣習に対応できるようになっています。
Access modifier style "normal":
class Indent private :method protected :method private def method; end protected def method; end public def method; end endAccess modifier style "indent":
class Indent private :method protected :method private def method; end protected def method; end public def method; end endAccess modifier style "outdent":
class Indent private :method protected :method private def method; end protected def method; end public def method; end end
同様に、g:ruby_indent_block_style
もあります。
Block indent style "expression":
first .second do |x| something end < Block indent style "do": > first .second do |x| something end
.
を行頭にもってくるのが気持ち悪く感じますが、デフォルトの"expression"はかなり気持ち悪いインデントになるので、
~/.vimrc`で
let g:ruby_indent_block_style = 'do'
すると便利ということがわかります。