Hatena::Grouphackathon

zrail (a.k.a. tobira17, h14i, ...) の Learning Log

2013-10-07

[][][]tern_for_vimを使ってTypeScriptの補完 09:26 tern_for_vimを使ってTypeScriptの補完 - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - tern_for_vimを使ってTypeScriptの補完 - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

タイトル通り。

tern_for_vimは本来JavaScript用のコードアシスタントツール。

なんだけど、TypeScriptのコードも結構補完してくれる。プロパティとか。(さすがにTSのclassとかinterfaceを使って定義したものは無理。)

まぁシンタックスとかほとんど一緒だからね。

なので設定例を貼っておいてみる。

ほとんど一緒だけど、neocomplete.vim & neobundle.vimなバージョンと直に使ってるバージョンの両方を書いておこう。

" with neocomplete.vim & neobundle.vim
NeoBundleLazy 'marijnh/tern_for_vim', {
\   'build': {'unix': 'npm install'},
\   'autoload': {'filetypes': ['javascript', 'typescript']}
\ }
let bundle = neobundle#get('tern_for_vim')
function! bundle.hooks.on_source(bundle)
  autocmd vimrc FileType typescript call tern#Enable() 
endfunction
unlet bundle

let bundle = neobundle#get('neocomplete.vim')
function! bundle.hooks.on_post_source(bundle)
  " いろいろな設定…

  let g:neocomplete#sources#omni#functions.typescript = 'tern#Complete'
  let g:neocomplete#sources#omni#input_patterns.typescript = '[^. \t]\.\%(\h\w*\)\?'

  " いろいろな設定…
endfunction
unlet bundle

" Direct
autocmd vimrc FileType typescript call tern#Enable()
autocmd vimrc FileType typescript setlocal omnifunc=tern#Complete

ちなみに本来の使い方(JavaScriptの補完とか)の説明は

tern.vimでvimでjavascriptの補完など(vim advent calendar2012, 155日目) - kozo2's blog

が分かりやすいです。

*追記

.tern-projectをちゃんと設定したほうが良いかも。