タイトルは釣りです.
JavaScriptを使った開発をしていると、とかくJSONによる設定ファイルが頻出しますよね.
NPMのpackage.jsonとか, Bower.json, .jshintrc, tsconfig.json等々です.
それぞれの設定ファイルについて, どのようなkeyが必要なのか, 値には何が書けるのか, 暗記していますか?
僕は覚えていません. 毎度毎度, ググったり, リファレンスページに行ったりしてました.
npm init
や bower init
で雛型は生成してくれるものの, 全てのkeyが載っている訳ではないですし...
(JSONにコメントが許されないのが辛いですね).
そこでJSON Schemaです.
JSON Schemaを使えば, keyや値(と言ってもenum程度ですが)の補完情報を生成出来ます.
誰かがそういうVim pluginを作って無いかなと思って探したのですが, 見つからなかったので自分で作りました.
Quramy/vison .
visonはJSON Schema Storeに登録されているschemaファイルを利用します.
冒頭で列挙したpackage.json(NPM), bower.json/bowerrc(Bower), .jshintrc(JSHint), tsconfig.json(TypeScript)等、よく使うようなschemaはSchema Storeに登録されているため, visonをインストールするだけで利用可能になります.
Install
Schema StoreからJSONをDLする都合上, gitコマンドがインストールされていることが前提です.
僕はNeoBundle使いなので, NeoBundleでのインストール方法を書いておきます.
下記2行を書いて, :NeoBundleInstall
を実行してください.
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Quramy/vison'
uniteは必須ではありませんが, visonはuniteのsourceにもなっているので, あると便利です.
visonのインストールが完了したら, Vimから :VisonSetup
コマンドを実行してください.
Schema StoreのJSONをvisonのキャッシュフォルダにダウンロードします.
(:VisonSetup
は次回以降のVim起動時は実行不要です)
使い方
Schemaの適用
例えば, NPMのpackage.jsonを作成するとしましょう.
Vimでpackage.jsonを開いたら, :Vison package.json
のコマンドを実行してください.
このコマンドにより, 編集中のバッファに対して, visonが管理しているschemaファイル"package.json"が適用されます.
バッファにschemaが適用されると, 補完(omni-complete)が使えるようになります.
keyの入力中に <Ctrl-x><Ctrl-o>
をタイプすると, 入力可能なkeyが補完されます.
自動適用
.vimrcに下記のように記載することで, schemaを自動的に適用することができます.
autocmdBufRead,BufNewFile package.json Vison
autocmdBufRead,BufNewFile .bowerrc Vison bowerrc.json
:Vison
コマンドはバッファのbasenameがschema名と一致している場合, 引数を省略できます. 上記のpackage.jsonに対するautocmdについては, 引数を省略しています.
Unite
uniteを使ってschemaを適用することも可能です. :Unite vison
を実行すると, visonにキャッシュされたschemaファイルの一覧が表示されます.
選択してEnterをタイプすることで, :Vison
コマンドと同様に, カレントバッファに選択したschemaを適用できます.
独自schemaの登録
自分でschemaファイルを作ったり, Schema Storeに存在しないshcemaファイルをダウンロードしたりした場合に, visonに登録することができます.
登録したいschemaファイルをVimで開き, :VisonRegisterSchema
コマンドを実行してください.
そのschemaファイルのbasenameをschema名として, visonに登録されます. schema名を明示的に指定したい場合は, :VisonRegisterSchema スキーマ名
のように引数として指定してください.
一度登録したschemaは, Schema Storeからキャッシュしたファイルと同様に :Vison
コマンドや Unite vison
上から選択可能です.
なお, 現状, 自分で登録したschemaファイルを削除する仕組みがありません.
デフォルトでは, :VisonRegisterSchema
で登録したファイルは ${HOME}/.cache/vison/default
フォルダにコピーされます.
削除する場合は, このディレクトリからファイルを削除してください.
その他
- 実は補完の仕組みはまだ完璧でなかったりします.
anyOf
のような複雑なschemaについてはfeature workということで... - もう少し細かい内容については,
:help vison.txt
でドキュメントを参照してください(こちらも書き掛けですけど...)