coc.nvim で JSON/YAML Schema による YAML ファイルの補完を行う方法
はじめに
私は普段 neovim 上で coc.nvim を使ったコード補完を行っている。仕事で JSON Schema もしくは YAML Schema を使って YAML ファイルの記入を補完したくなったので neovim + coc.nvim 環境上で、JSON Schema もしくは YAML Schema を使った YAML ファイル上での補完をセットアップする方法を解説する。
セットアップ方法
本稿では coc.nvim は既にセットアップされているものとする。coc.nvim をセットアップしていない人は適当な記事を参照してセットアップされたし。
coc 上で yaml をインストールする
最初に coc-yaml をインストールする。リンク先にある通り、
:CocInstall coc-yaml
と neovim のコマンドで叩くだけである。
YAML ファイルのスキーマを指定する
スキーマの指定方法には何種類かがある。
(1) mode line に記述する
対象の YAML ファイルに対して mode line に以下の様な内容を記述する。<urlToTheSchema>
の部分をスキーマファイルの URL に置き換える。
# yaml-language-server: $schema=<urlToTheSchema>
(2) 特定パターンのファイル名に対して特定のスキーマを常に使う
coc の設定ファイルに記述しておくと、coc-yaml は特定パターンのファイル名に対して特定のスキーマを常に(デフォルトで)使うように設定することができる。
coc のプラグインは CocConfig
で設定を書く決まりなので neovim から
:CocConfig
と打つ。以下の様なパターンで、用いる JSON Schema の URI を書いていく。個人的には左右逆になってくれる方が分かりやすいのだが、現在編集中の YAML ファイルが右側(リスト)のどれかにヒットしたとき、左側のスキーマ(JSON Schema ファイルもしくは YAML Schema ファイル)を使ってバリデーションや補完を行う。
"yaml.schemas": {
"http://json.schemastore.org/composer": ["/*"],
"file:///home/johnd/some-schema.json": ["some.yaml"],
"../relative/path/schema.json": ["/config*.yaml"],
"/Users/johnd/some-schema.json": ["some.yaml"],
}
上記の例で下から2つ目の相対パス記載だが、相対パスで記載するとプロジェクトルートディレクトリ(git リポジトリのルートとか)からの相対パスになるようだ。(「なるようだ」というのは、ドキュメントを読んでもそのような記載はされていないように思えるが、手元で数例試した限りではここに解釈が正しそうに私には思える。)
Author And Source
この問題について(coc.nvim で JSON/YAML Schema による YAML ファイルの補完を行う方法), 我々は、より多くの情報をここで見つけました https://qiita.com/mkasahara/items/ca1273b8cc042de4a61a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .