【LunarVim】python 开发环境IDE配置

1、概述

配置文件链接:starter.lvim: Python
该配置为 Python 开发打造一个绝佳的起点,包含以下内容:

1、语言服务器协议 LSP
2、格式化
3、代码检查
4、快捷键映射

在这里插入图片描述

2、配置文件config.lua

-- install plugins
lvim.plugins = {
  "ChristianChiarulli/swenv.nvim",
  "stevearc/dressing.nvim",
  "mfussenegger/nvim-dap-python",
  "nvim-neotest/neotest",
  "nvim-neotest/neotest-python",
}

-- automatically install python syntax highlighting
lvim.builtin.treesitter.ensure_installed = {
  "python",
}

-- setup formatting
local formatters = require "lvim.lsp.null-ls.formatters"
formatters.setup { { name = "black" }, }
lvim.format_on_save.enabled = true
lvim.format_on_save.pattern = { "*.py" }

-- setup linting
local linters = require "lvim.lsp.null-ls.linters"
linters.setup { { command = "flake8", filetypes = { "python" } } }

-- setup debug adapter
lvim.builtin.dap.active = true
local mason_path = vim.fn.glob(vim.fn.stdpath "data" .. "/mason/")
pcall(function()
  require("dap-python").setup(mason_path .. "packages/debugpy/venv/bin/python")
end)

-- setup testing
require("neotest").setup({
  adapters = {
    require("neotest-python")({
      -- Extra arguments for nvim-dap configuration
      -- See https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for values
      dap = {
        justMyCode = false,
        console = "integratedTerminal",
      },
      args = { "--log-level", "DEBUG", "--quiet" },
      runner = "pytest",
    })
  }
})

lvim.builtin.which_key.mappings["dm"] = { "<cmd>lua require('neotest').run.run()<cr>",
  "Test Method" }
lvim.builtin.which_key.mappings["dM"] = { "<cmd>lua require('neotest').run.run({strategy = 'dap'})<cr>",
  "Test Method DAP" }
lvim.builtin.which_key.mappings["df"] = {
  "<cmd>lua require('neotest').run.run({vim.fn.expand('%')})<cr>", "Test Class" }
lvim.builtin.which_key.mappings["dF"] = {
  "<cmd>lua require('neotest').run.run({vim.fn.expand('%'), strategy = 'dap'})<cr>", "Test Class DAP" }
lvim.builtin.which_key.mappings["dS"] = { "<cmd>lua require('neotest').summary.toggle()<cr>", "Test Summary" }


-- binding for switching
lvim.builtin.which_key.mappings["C"] = {
  name = "Python",
  c = { "<cmd>lua require('swenv.api').pick_venv()<cr>", "Choose Env" },
}

3、配置说明

这段代码是一个用于配置 LunarVim(一个基于 Neovim 的现代化 IDE 风格编辑器)的 Lua 脚本,主要用于增强 Python 开发体验。以下是对代码的详细说明:

3.1 安装插件

lvim.plugins = {
  "ChristianChiarulli/swenv.nvim",
  "stevearc/dressing.nvim",
  "mfussenegger/nvim-dap-python",
  "nvim-neotest/neotest",
  "nvim-neotest/neotest-python",
}
  • 这部分定义了需要安装的插件列表:
    • swenv.nvim:用于管理 Python 虚拟环境。
    • dressing.nvim:改进 Neovim 的 UI 组件(如菜单、输入框等)。
    • nvim-dap-python:为 Python 提供调试支持(基于 Debug Adapter Protocol)。
    • neotestneotest-python:用于运行和调试 Python 测试。

3.2 自动安装 Python 语法高亮

lvim.builtin.treesitter.ensure_installed = {
  "python",
}
  • 使用 Tree-sitter 确保 Python 语言的语法高亮功能已安装。

3.3 设置格式化工具

local formatters = require "lvim.lsp.null-ls.formatters"
formatters.setup { { name = "black" }, }
lvim.format_on_save.enabled = true
lvim.format_on_save.pattern = { "*.py" }
  • 使用 null-ls 插件集成格式化工具:
    • 设置 black 作为 Python 的代码格式化工具。
    • 启用保存文件时自动格式化功能,并限定只对 .py 文件生效。

3.4 设置代码检查工具

local linters = require "lvim.lsp.null-ls.linters"
linters.setup { { command = "flake8", filetypes = { "python" } } }
  • 使用 null-ls 插件集成代码检查工具:
    • 设置 flake8 作为 Python 的代码检查工具。
    • 限定只对 Python 文件生效。

3.5 配置调试适配器

lvim.builtin.dap.active = true
local mason_path = vim.fn.glob(vim.fn.stdpath "data" .. "/mason/")
pcall(function()
  require("dap-python").setup(mason_path .. "packages/debugpy/venv/bin/python")
end)
  • 启用 LunarVim 内置的调试功能(DAP)。
  • 使用 debugpy 作为 Python 的调试器:
    • mason_path 是通过 Mason 插件管理工具安装的调试器路径。
    • dap-python 插件会使用指定的 Python 解释器来启动调试。

3.6 配置测试框架

require("neotest").setup({
  adapters = {
    require("neotest-python")({
      dap = {
        justMyCode = false,
        console = "integratedTerminal",
      },
      args = { "--log-level", "DEBUG", "--quiet" },
      runner = "pytest",
    })
  }
})
  • 配置 neotest 插件以支持 Python 测试:
    • 使用 pytest 作为测试运行器。
    • 配置调试选项(如 justMyCodeconsole)。
    • 添加额外的命令行参数(如日志级别和静默模式)。

3.7 绑定快捷键

1) 测试相关快捷键
lvim.builtin.which_key.mappings["dm"] = { "<cmd>lua require('neotest').run.run()<cr>", "Test Method" }
lvim.builtin.which_key.mappings["dM"] = { "<cmd>lua require('neotest').run.run({strategy = 'dap'})<cr>", "Test Method DAP" }
lvim.builtin.which_key.mappings["df"] = {
  "<cmd>lua require('neotest').run.run({vim.fn.expand('%')})<cr>", "Test Class" }
lvim.builtin.which_key.mappings["dF"] = {
  "<cmd>lua require('neotest').run.run({vim.fn.expand('%'), strategy = 'dap'})<cr>", "Test Class DAP" }
lvim.builtin.which_key.mappings["dS"] = { "<cmd>lua require('neotest').summary.toggle()<cr>", "Test Summary" }
  • 定义了一系列快捷键用于运行和调试测试:
    • dm:运行当前方法的测试。
    • dM:使用调试模式运行当前方法的测试。
    • df:运行当前文件的所有测试。
    • dF:使用调试模式运行当前文件的所有测试。
    • dS:切换测试结果摘要窗口。
2) Python 环境切换快捷键
lvim.builtin.which_key.mappings["C"] = {
  name = "Python",
  c = { "<cmd>lua require('swenv.api').pick_venv()<cr>", "Choose Env" },
}
  • 定义了一个快捷键用于切换 Python 虚拟环境:
    • C-c:打开虚拟环境选择菜单。

3.8 总结

这段配置脚本的主要目的是为 LunarVim 提供一套完整的 Python 开发工具链,包括:

  • 虚拟环境管理swenv.nvim)。
  • 代码格式化black)和 代码检查flake8)。
  • 调试支持debugpydap-python)。
  • 测试支持neotestpytest)。
  • 快捷键绑定,方便开发者快速执行常见操作。

通过这些配置,开发者可以在 LunarVim 中高效地进行 Python 开发,享受现代化 IDE 的便利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值