祝! 1.5.0-alpha
TypeScript 1.5.0-alphaがリリースされましたね!
TypeScriptの1.5では, ES6対応や, Annotation(Decorator)等の言語の対応だけでなく, TSServerというエディタ向けツールが含まれています.
TSServerは, コンパイルやリファクタリングなど、エディタに必要な機能を提供するServerです. 標準入出力を介して, エディタに様々な情報を提供してくれる優れものです.
MicroSoftが提供しているSublime TextのPluginも, このTSServerを使って実装されています.
TSServerとVim plguin
とはいえ、僕はVim使い。残念なことに, MicroSoftはVim向けのPluginまでは作ってくれませんでした.
ということで, TSServerを利用したVim plugin tsuquyomiを作りました.
tsuquyomiは現状で、下記をサポートしています:
- 補完(omni-complete)
- Class, Method, Property等の定義箇所へジャンプ
- Class, Method, Property等を参照している箇所へのジャンプ
- コンパイルエラー箇所のQuickfix表示
- etc...
Install
TypeScriptを最新化します:
npm -g install typescript
tsuquyomiはShougo/vimproc.vimを利用します. 事前にInstallしておいてください。
(Windows版であれば, kaoriyaのgvimには最初からvimprocがバンドルされています)
Vim のplugin管理にNeoBundleを使っているのであれば, .vimrcに下記を追記して, :NeoBundleInstall
を実行すると, vimproc, tsuquyomiの双方がinstallされます.
NeoBundle 'Shougo/vimproc'
NeoBundle 'Quramy/tsuquyomi'
vimprocは下記でruntimeをbuildしてください(https://github.com/Shougo/vimproc.vim#installも参照の事):
cd ~/.vim/bundle/vimproc
make
補完
FileTypeがtypescriptであれば、omni補完が有効化されます. <Ctrl-x><Ctrl-o>
を補完したい箇所でタイプしてください.
定義箇所へのジャンプ
<Ctrl-]>
を任意のSymbol上でタイプすると, そのSymbolが定義されている箇所へジャンプします. 定義が別ファイルの場合, windowをsplitして定義箇所を表示します.
(ちなみに, /// <reference path="..." />
とかでタイプすると, .d.tsファイルを開くことができます)
参照箇所の表示
<Ctrl-^>
を任意のSymbol上でタイプすると, そのSymbolを参照している箇所の一覧をlocation listで表示します.
(但し, 参照箇所として認識するのは, 現在Vimで開いているバッファに限定されます.)
Quickfix
バッファの保存時, コンパイルエラーとなっている箇所をQuickfixウィンドウに表示します.
リファクタリング
SymbolのRename機能を提供します.
デフォルトではkey mapしていませんが, <Plug><TsuquyomiRenameSymbol>
をmapすれば呼び出せるようになります.
例えば, 下記は「,e」をマップする例です.
let mapleader =","noremap \ ,
augroup typescript_key_mapping
autocmdFileType typescript nmap <buffer><Leader>e<Plug>(TsuquyomiRenameSymbol)
augroup END
その他
tsuquyomiには他にも幾つか機能があります. 詳細は, READMEか, help docを見てください.
今後, outline(unite-outlineと連動させたい)等を追加していく予定です.
tsuquyomiを作成する上で, TSServerの利用方法も大体身についたので, 機会があればまとめて記載します(あんまり需要無い気もするけど...).