わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

vimでscalaのシンタックスハイライトと補完が使えるようにする

vimscalaが快適に書けるようにするためにシンタックスハイライトの設定と補完の設定をする。

シンタックスハイライト

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を使えるようにする。
vimluaが使えないといけないとのことなので、以下のように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というのも導入した。かっこいい。

f:id:kimikimi714:20150604224920p:plain

ちょっとかっこよくなったし、ちょっと書きやすくなった。

以下参考リンク