vimでscalaが快適に書けるようにするためにシンタックスハイライトの設定と補完の設定をする。
シンタックスハイライト
vim-scalaを導入する。
neobundleを使っている前提で次の行を.vimrc
に追加する。
" scala用syntax highlight NeoBundle 'derekwyatt/vim-scala'
ただ、これだけだとscalaのファイルを開くたびにsetf scala
を実行しないとscalaに切り替わってくれないので、さらに~/.vim/ftdetect/scala.vim
というファイルを作って次のように記載する。
" scalaが拡張子のファイルはファイルタイプをscalaとして読みこむ au BufNewFile,BufRead *.scala setf scala
もしvim/runtime/filetype.vim
というファイルがどこかにあったら、その中に
runtime! ftdetect/*.vim
という行が書かれている。これは~/.vim/ftdetect/
下のファイルをすべて読みこむという意味なので、他のファイルについても拡張子を見て自動判別してほしいときにはfile_type.vim
みたいなファイルを置くといい。
補完が効くようにする
デフォルトでも補完は使えるが、思い立ったのでShougo/neocomplete.vimを使えるようにする。
vimでluaが使えないといけないとのことなので、以下のようにvim with luaをインストールする。
brew install lua brew reinstall vim --with-lua
vim --version | grep lua
で+lua
というのが出てればおk。もちろんvimを立ち上げて:echo has("lua")
で1が返ってくるのを確認してもいい。
以下のように.vimrc
を編集する。といってもneocompleteのREADME.mdに書かれてる設定をほぼ丸パクリ。
" https://github.com/Shougo/neocomplete.vim NeoBundle 'Shougo/neocomplete.vim' " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 " Use underbar completion. let g:neocomplete#enable_underbar_completion = 1 " ユーザ定義の辞書を指定 let g:neocomplete#sources#dictionary#dictionaries = { \ 'default' : '', \ 'scala' : $HOME . '/.vim/dict/scala.dict', \ } " Plugin key-mappings. inoremap <expr><C-g> neocomplete#undo_completion() inoremap <expr><C-l> neocomplete#complete_common_string() " Recommended key-mappings. " <CR>: close popup and save indent. inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> function! s:my_cr_function() return neocomplete#close_popup() . "\<CR>" endfunction " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " <C-h>, <BS>: close popup and delete backword char. inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><C-y> neocomplete#close_popup() inoremap <expr><C-e> neocomplete#cancel_popup()
ついでに
Shougo/unite.vimでもファイル立ち上げは便利にできるけども、tree上に立ち上げる見た目がかっこいいのが欲しくてscrooloose/nerdtreeというのも導入した。かっこいい。
ちょっとかっこよくなったし、ちょっと書きやすくなった。
以下参考リンク
- derekwyatt/vim-scala · GitHub
- Scalaざっと調べ - テストステ論
- Scala + Vim でハイライト & コード補完 – hanhan's blog
- vimが自動認識するファイルタイプを自分で設定する - Hack myself
- Shougo/neocomplete.vim · GitHub
- An introduction to neocomplete
- MacOSX - vim で lua を有効にする - Qiita
- Shougo/unite.vim · GitHub
- scrooloose/nerdtree · GitHub
- Shougo/neobundle.vim · GitHub