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

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

$
0
0

タイトルは釣りです.

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が補完されます.
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を適用できます.
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 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>