Magnolia Tech

いつもコードのことばかり考えている人のために。

vim-scalaでできること

github.com

vim用のScalaプラグインvim-scala」の使い方メモ そういえば、ずっと使っている割にどんな機能があるのか知らなかったので、ソースコードを見ながらまとめた結果。

インストール方法

パッケージマネージャー「dein」を使っていれば、.vimrcに以下の内容を追加する。

call dein#add('derekwyatt/vim-scala')

ヘルプの表示

:help scala

なお、ヘルプのURLは以下の通り。

https://github.com/derekwyatt/vim-scala/blob/master/doc/scala.txt

ヘルプには、vim-scalaは以下の機能をサポートしていると書かれている。

  • シンタックスハイライト
  • import文のソート
  • tagbarのサポート
  • その他、もしかしてドキュメントをアップデートし忘れている更なるナニカ…

機能解説

シンタックスハイライト

どの拡張子に対してシンタックスハイライトが有効になるかは、下記のファイルを参照。

https://github.com/derekwyatt/vim-scala/blob/master/ftdetect/scala.vim

つまり、以下の条件で自動的にScalaソースコードとして認識される。

  • shebangscalaが指定されている
  • 拡張子が.scala
  • 拡張子が.cs

なお、拡張子が.sbtの場合は、sbt用のシンタックスハイライトが使われる(vim-scalaには含まれていないが、vimの標準ディストリビューションには含まれていて、Scala用のシンタックスハイライトに加えて、(最近では使われなくなった)sbtで使われているDSL記号がハイライトされる。

import文のソート

:SortScalaImportsで開いているScalaソースコードに書かれているimportの内容をソートする。

ソートに関してカスタマイズが可能。カスタマイズの内容は、ヘルプを参照のこと。

そんなに頻繁に使うことはない気もするけど、インポートの数が凄く多い時には便利…なのか?

tagbarサポート

ctagsがインストールされていれば、ウインドウの右側にtagsに関する情報を表示する。 (macOS Xの場合、ctagsコマンドはbrew install ctagsで別途インストールが必要)

:TagbarToggleで有効になる。

vim-scala自体が、Scala用のctagsファイルを内蔵しているので、別途用意する必要は無い。

https://github.com/derekwyatt/vim-scala/blob/master/ctags/scala.ctags

インデントサポート

ヘルプには詳しく書かれてないが、Scala固有のインデントをサポート。拡張子

https://github.com/derekwyatt/vim-scala/blob/master/indent/scala.vim

QuickFixサポート

ScalaのためのQuickFixのサポートが提供されています。:makesbt compileが実行される。

https://github.com/derekwyatt/vim-scala/blob/master/compiler/sbt.vim

ただし、上記のソースを見ると分かるのですが、sbtの起動から始めるので、常用するには少々速度の点で厳しいかも…?

FuzzyFinderサポート

ヘルプの最後に追加されているが、FuzzyFinderのサポートも有る(最初に上げられてた機能一覧に無いけど、なぜかドキュメントの最後に追記されています)。

おわりに

インストールしたら、シンタックスハイライトが効いて、いい感じにインデントをセットしてくれる、ぐらいの使い方で十分な気がする。