[小ネタ] VimでJSONのLinterを設定する方法

2020.01.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、Developers.IOの特集カテゴリーについにVimが追加されたと聞きました。
ありがとうございました!と言うわけで早速Vimの記事を書きたいと思いました。

Vim – 特集カテゴリー –

今回はVimのLinterプラットフォームPlugin、ALEでJSONLintを設定する方法をご紹介します。
本来はALEを使うことでJSONLintを非同期に実行できますが、本記事で紹介しているのは有効/無効を切替えて使う設定例です。
この方法であれば、LSP等と併用した際も問題が起こりにくいと思います。

検証環境

以下、手元の検証環境です。
- Vim

$ vim --version | head -n 1  
VIM - Vi IMproved 8.1  (以下略)

準備

JSONLintのnpmパッケージをインストールします。
https://www.npmjs.com/package/jsonlint

 npm install jsonlint -g

ALE自体の導入方法は、ここではvim-plugを使った例のみ記載しておきます。詳細は以下をご確認下さい。
GitHub - Asynchronous Lint Engine

 Plug 'w0rp/ale'

Setting

ALEプラグインを導入後に以下を.vimrcに設定します。

" Vim起動時にALEをOFFにする設定です
let g:ale_lint_on_enter = 0

" JSONLintをALEで使うよう指定します
let g:ale_linters = {
    \   'json': ['jsonlint'],
    \}

" ALEの有効/無効切替をお好みのキーにマップします(※任意です)
nmap <silent>, <Plug>(ale_toggle)

さいごに

ALEのリファレンスを読んでいくと、どのJSON Linterが対応しているか辿り着けるのですが、実際に設定例を紹介している情報は少ない印象でした。
JSONは様々な場面で使いますし、設定ファイルぐらいならVimでやりたいと言う方も少なくないと思いますので、参考にして貰えれば幸いです。