Scalaのvim用の設定

はじめに

 Windows用のvimにて、Scalaプログラムの編集時に、シンタックスハイライト、インデントルールを適用するための設定を行った。また、エラーの修正の効率を上げるために、QuickFixコマンドを利用可能にするための設定も行った。細部は異なるが、Linuxなどのvimでも利用できるはず。
 記事中で設定ファイルを3つダウンロードし、2つのファイルを記述するけど、面倒くさいので、必要なファイルを用意しておく。

シンタックスハイライトやインデントルールの設定

 Scalaのプロジェクトの公式のvim用設定があるのでそれを利用する。

 まず、公式vim用設定ファイルのページにアクセスする。このページには、3つのサブディレクトリ「ftdetect」、「indent」、「syntax」があるので、それぞれの配下にある「scala.vim」をダウンロードする。名前が同じで、それぞれの名前を「scala-ftd.vim」「scala-ind.vim」「scala-syn.vim」としておく。

 次に、ダウンロードしたvim用の設定ファイルを配置するためのフォルダ「$HOME/vimfiles/ftdetect」「 $HOME/vimfiles/indent」「$HOME/vimfiles/syntax」を作成する($HOMEはホームフォルダを意味する)。そして、3つのvim用の設定ファイル「scala-ftd.vim」「scala-ind.vim」「scala-syn.vim」を対応するフォルダに「scala.vim」というファイル名で保存する。

 以上で、vimscalaのファイルを編集するときに、シンタックスハイライトや専用のインデントルールが適用される。

Scalaプログラムの編集時に独自設定を利用する

 上記のシンタックスハイライトやインデントルールの設定を行った後に、「$HOME/vimfiles/ftplugin」を作成する。そして、そのフォルダにScala用の独自設定を「scala.vim」というファイル名で保存する。

Scalaプログラムのエラー修正の効率向上(QuickFixコマンドを利用できるようにする)

 Vimには編集-コンパイル-編集のサイクルを加速するための特別なQuickFixコマンド(たとえば、cw、clなど)がある。これを利用すると、編集中のプログラムのコンパイル、エラー箇所の修正が容易になる。QuickFixコマンドは、CやJavaといった有名言語なら最初から利用可能である。しかし、Scalaに対してQuickfixは利用できない。以下、Scalaプログラムの編集中にQuickfixコマンドを利用するための手順を述べる。

 まず、Scalaコンパイラ用の設定ファイル「scalac.vim」を作成する。下にファイル内容を示す。「scalac.vim」を「vimのインストールフォルダ/runtime/compiler」に保存する。これで、Scalaプログラムの編集時でもQuickFixコマンドが使用可能になる。なお、作成にあたり、ほぼJavaコンパイラの設定ファイル「javac.vim」を流用した。

scalac.vim
if exists("current_compiler")
  finish
endif
let current_compiler = "scalac"

if exists(":CompilerSet") != 2		" older Vim always used :setlocal
  command -nargs=* CompilerSet setlocal <args>
endif

CompilerSet makeprg=scalac

CompilerSet errorformat=%f:%l:\ error:\ %m,%-Z%p^,%-C%.%#,%-G%.%#

 

 適当なエラーが含まれるScalaプログラムを開き、以下の手順でコマンドを実行する。すると、コンパイル時のエラーが表示される。エラー表示ウィンドウに移動し、「Enter」を押すと、実際にエラーがある行にジャンプできる(便利!)。

:compiler scalac
:make 編集中のScalaプログラムの名前
:cw

Scalaプログラムのコンパイルと実行の簡略化

 vimを開くたびに、「:compiler scalac」を実行するのは面倒くさい。また、makeコマンドを実行するのも面倒くさい。なので、Scalaプログラムを開いたときに、自動で「:compiler scalac」を実行し、ワンタッチでmakeコマンドの実行をできるようにする。そのために、「$HOME/vimfiles/ftplugin」に下の設定ファイルを「scala.vim」として保存する。

Scala専用の設定
compiler scalac

"コンパイル
map <F5> <ESC>:w<CR>:cd %:h<CR>:make -sourcepath . %:p<CR>:cd -<CR>
map! <F5> <ESC>:w<CR>:cd %:h<CR>:make -sourcepath . %:p<CR>:cd -<CR>

"実行
map <F6> <ESC>:w<CR>:cd %:h<CR>:!scala %:r<CR>:cd -<CR>
map! <F6> <ESC>:w<CR>:cd %:h<CR>:!scala %:r<CR>:cd -<CR>

"コンパイル+実行
map <F7> <ESC>:w<CR>:cd %:h<CR>:make -sourcepath . %:p<CR>:!scala %:r<CR>:cd -<CR>
map! <F7> <ESC>:w<CR>:cd %:h<CR>:make -sourcepath . %:p<CR>:!scala %:r<CR>:cd -<CR>