VimでScalaを編集中に{,(,[で改行したときに },),] を自動で入力する
お目当てのIntelliJのScalaプラグインがなかなか遊んでくれないもんで、その間にVimのautoend.vimにおれおれautoend_scala.rbを追加した。
これでVimでのScalaコーディングがちょっと快適に。
ちなみに他にはScala公式謹製のScalaのインデントとシンタックスハイライトを使ってます。あ、あと辞書ファイル。
autoend.vimが何かって言うのはこちらでも見て下さい。
rubyの対応が書かれているautoend_ruby.rbをぱくって削りまくってちょっと付け足しだたけの劣化版なんだけど、これで十分なんじゃね?という。
#autoend_scala.rb #autoend_ruby.rbをコピって削ったscala版 class AutoEnd::Handler::Scala include AutoEnd::Helper def self.filetypes %w(scala) end def initialize @exps = [ /([{(\[])\s*$/ # {,(,[ ] @assoc = Hash.new {|h, k| k }.merge( '(' => ')', '{' => '}', '[' => ']' ) end def handle(line = $curbuf.line) return unless eol? && @exps.find {|e| e =~ line } append_line(indent + @assoc[$1]) if $1 end end
Scalaの場合はとりあえず、{,(,[だけ対応してれば十分かなと。
ちなみにautoend.vimの作者さんは、endwise.vimっていう同じ機能の物があるので、そっちに乗り換えますっていってるんだけど、autoend.vimはRubyコードで書いてあって、個人的にこっちの方がいじりやすいので、自分としてはこっちを使い続けられる限り使い続けていこうかなと思ってます。