Quantcast
Viewing all articles
Browse latest Browse all 5712

VimでJSONファイルを100倍快適に作成する方法

タイトルは釣りです.

JavaScriptを使った開発をしていると、とかくJSONによる設定ファイルが頻出しますよね.
NPMのpackage.jsonとか, Bower.json, .jshintrc, tsconfig.json等々です.

それぞれの設定ファイルについて, どのようなkeyが必要なのか, 値には何が書けるのか, 暗記していますか?
僕は覚えていません. 毎度毎度, ググったり, リファレンスページに行ったりしてました.

npm initbower 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を実行してください.

.vimrc
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が補完されます.
Image may be NSFW.
Clik here to view.
capt_comp.png

自動適用

.vimrcに下記のように記載することで, schemaを自動的に適用することができます.

.vimrc
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を適用できます.
Image may be NSFW.
Clik here to view.
capt_unite.png

独自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でドキュメントを参照してください(こちらも書き掛けですけど...)

Viewing all articles
Browse latest Browse all 5712

Trending Articles