nvimの自動整形用プラグインをnone_lsからconform.nvimに置き換えた
私が所属している部署にAIを専門とするチームがあり、そのチームではPythonを利用して開発を行っています。
つい先日、そのチームに所属するメンバーがPythonのlinter/formatterであるruffを導入しました。
私は主にGoで開発を行っているのですが、別の業務でPythonを利用することもあるため、ruffを使ってみることにしました。
ruffを導入する過程で、nvimの自動整形用のプラグインであるnone-lsがruffに対応していないことが分かったため、conform.nvimに置き換えることにしました。
conform.nvimについて
conform.nvimは、nvimで書いたコードを自動整形するためのプラグインです。
READMEにあるとおり、軽量で使いやすいプラグインであり、設定も簡単でした。
none-lsは2023年にアーカイブされたnull-lsの後継で、自動整形だけでなくLSPを利用したコード分析(diagnostics)なども行える多機能なプラグインですが、ruffに対応していませんでした。
私はリンターやdiagnosticsの機能をnvim-lspconfigで設定しているため、none-lsは自動整形の機能だけを利用していました。そのような事情から、自動整形のみに特化したconform.nvimは、私にとって最適な選択肢でした。
置き換え作業
conform.nvimのインストールは、プラグインマネージャーであるlazy.nvimを利用して行いました。
1{
2 "stevearc/conform.nvim",
3 lazy = true,
4 event = { "BufRead", "BufNewFile" },
5 config = function()
6 require("conform_nvim")
7 end,
8},
フォーマッターはファイルを保存するときに実行されればよいので、遅延読み込みしています。また、conform.nvimの設定はconform_nvim.lua
に記述しています。
1require("conform").setup({
2 format_on_save = {
3 timeout_ms = 500,
4 lsp_format = "fallback",
5 },
6 formatters_by_ft = {
7 go = { "goimports" },
8 javascript = { "prettierd", "prettier", stop_after_first = true },
9 lua = { "stylua" },
10 python = { "ruff_fix", "ruff_format", "ruff_organize_imports" },
11 },
12})
format_on_save
はファイルを保存するときに自動整形を有効にする設定です。
formatters_by_ft
に利用するフォーマッターを設定しています。
ruffのインストール
conform.nvimの設定だけでは当然動かないので、ruffをインストールする必要があります。インストール方法は公式サイトを参照のこと。
まとめ
conform.nvimに置き換えることで、ruffを利用した自動整形が可能になりました。また、conform.nvimの設定がかなりシンプルであるため、設定ファイルもすっきりしました。