Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

TypeScript 1.5のTSServerでPluginつくった

$
0
0

祝! 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を作りました.

capt_comp.png

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されます.

.vimrc
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」をマップする例です.

.vimrc
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の利用方法も大体身についたので, 機会があればまとめて記載します(あんまり需要無い気もするけど...).


Viewing all articles
Browse latest Browse all 5608

Trending Articles