python lazyvim自动格式化

在使用 LazyVim(Neovim 的 Lazy 配置)时,自动格式化 Python 代码可以通过设置 null-ls 插件并结合 Python 格式化工具(如 blackisort 等)来实现。

下面是配置 LazyVim 自动格式化 Python 的步骤:

1. 安装 Python 格式化工具

首先,确保你已经安装了 Python 格式化工具,比如 blackisort

pip install black isort

2. 配置 LazyVim

LazyVim 使用 null-ls 来集成格式化工具。你需要在 LazyVim 的配置文件中配置 Python 文件的自动格式化。

打开 ~/.config/nvim/lua/plugins/null-ls.lua(或者你的 LazyVim 配置路径),并进行以下修改:

return {
  "jose-elias-alvarez/null-ls.nvim",
  opts = function(_, opts)
    local nls = require("null-ls")

    -- 确保 opts.sources 是一个表
    opts.sources = opts.sources or {}

    -- 添加 black 和 isort 作为格式化工具
    opts.sources = vim.list_extend(opts.sources, {
      nls.builtins.formatting.black,
      nls.builtins.formatting.isort,
    })
  end,
}

这会将 blackisort 作为 Python 的格式化工具加载到 null-ls 中。

3. 配置自动格式化

为了让 LazyVim 自动格式化 Python 文件,你可以通过以下方式设置保存时自动格式化。

~/.config/nvim/init.lua 中添加:

-- 在保存时自动格式化
vim.api.nvim_create_autocmd("BufWritePre", {
  pattern = "*.py",
  callback = function()
    vim.lsp.buf.format({ async = false })
  end,
})

这样,每次保存 .py 文件时,LazyVim 就会自动调用 blackisort 进行格式化。

4. 测试自动格式化

重新启动 Neovim 并打开一个 Python 文件,编辑后保存,观察是否会自动格式化代码。如果配置正确,代码应该会自动按照 blackisort 的规范进行格式化。

额外工具

你可以根据需要安装其他 Python 格式化工具,如 flake8autopep8,并按上述方式在 null-ls 中配置。