JavaScriptのフォーマッターPrettierのVimプラグインをインストールした

  • vim-prettierは、デフォルトの設定ではprettierのデフォルトルールとは違う整形ルールを持つ。
  • vim-prettierは、デフォルトの設定では.prettierrcがあればその設定を優先する。

prettier

prettier.io

prettierのインストール

プロジェクトローカルにprettierをインストールする。

npm init
npm install --save-dev prettier

使い方

npx prettier --write index.js
  • --writeはファイルを上書きする
  • --checkはdiffではなく、整形済みかどうかのみを出力する

vim-prettier

github.com

インストール

~/.vim/pack/<pkgname>/start/にgit cloneする。 vimrcに何も指定しなくても:Prettierコマンドを実行すれば使える。

  • g:prettier#exec_cmd_path

    • 指定しなくても、パッケージルートのnode_modules/.bin/prettierが使用された
    • コマンドを探す順は、READMEに書いてあった
    • 現在のパスは :PretierCliPathで確認できる
  • g:prettier#exec_cmd_async default:0

    • デフォルトでは非同期実行ではない
  • <Leader>p:Prettierコマンドがマップされている

Prettierの整形オプション

CLIでオプションなしで実行した場合と、vim-prettierでオプションを既定値で実行した場合とで結果が違う。 引用符の一重と二重とか他にも。 READMEに書いてあった、意図的にcliのdefaultとは違うオプション指定にしてあるそうな。

github.com

prettierrc

.prettierrcを置けば、vim-prettierもそれを読む。

  • g:prettier#config#config_precedence default: prefer-file
    • cli-override
      • 設定ファイルよりもcliフラグが優先される
    • file-override
      • cliフラグが設定ファイルとマージされる
    • prefer-file
      • 設定ファイルがあったらcliフラグは無視される
    • たぶんここでいうcliフラグは、vim-prettierがcliをコールするときに設定するg:prettier#configの各設定値のこと

{}だけを書いた.prettierrcをプロジェクトルートに置けば、prettier#config#config_precedence = prefer-fileのときにvim-prettierの整形ルールがデフォルトのCLIの整形ルールと同一になる。