1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| -- ~/.config/nvim/lua/plugins/dap.lua return { "mfussenegger/nvim-dap", config = function() local dap = require('dap') local dapui = require('dapui') -- 导入 dap-ui 模块(依赖已声明,可直接用)
-- 仅保留调试配置项(适配器由 nvim-jdtls 自动提供) dap.configurations.java = { { type = "java", request = "launch", name = "Launch Main Class", mainClass = "${file}", -- 自动识别当前文件主类 projectName = "${workspaceFolderBasename}", }, { type = "java", request = "attach", name = "Debug (Attach) - Remote", hostName = "127.0.0.1", port = 5005, }, }
-- ========== 新增:调试核心快捷键(全局生效,Java 调试通用) ========== local map_opts = { noremap = true, silent = true } -- 快捷键基础配置 local keymap = vim.keymap.set
-- 1. 断点相关 keymap("n", "<leader>db", dap.toggle_breakpoint, vim.tbl_extend("force", map_opts, { desc = "DAP: 切换断点" })) keymap("n", "<leader>dB", function() dap.set_breakpoint(vim.fn.input("断点条件: ")) -- 条件断点 end, vim.tbl_extend("force", map_opts, { desc = "DAP: 设置条件断点" })) keymap("n", "<leader>dr", dap.clear_breakpoints, vim.tbl_extend("force", map_opts, { desc = "DAP: 清空所有断点" }))
-- 2. 调试流程控制 keymap("n", "<leader>dc", dap.continue, vim.tbl_extend("force", map_opts, { desc = "DAP: 启动/继续调试" })) keymap("n", "<leader>ds", dap.step_over, vim.tbl_extend("force", map_opts, { desc = "DAP: 单步跳过(逐行执行)" })) keymap("n", "<leader>di", dap.step_into, vim.tbl_extend("force", map_opts, { desc = "DAP: 单步进入(进入函数)" })) keymap("n", "<leader>do", dap.step_out, vim.tbl_extend("force", map_opts, { desc = "DAP: 单步退出(退出函数)" })) keymap("n", "<leader>dq", dap.terminate, vim.tbl_extend("force", map_opts, { desc = "DAP: 终止调试会话" }))
-- 3. DAP UI 控制(配合 rcarriga/nvim-dap-ui) keymap("n", "<leader>du", dapui.toggle, vim.tbl_extend("force", map_opts, { desc = "DAP: 切换调试UI" }))
-- ========== 可选:自动联动 DAP UI(启动调试时打开,终止时关闭) ========== dapui.setup() -- 初始化 dap-ui(默认布局,无需额外配置) dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() -- 调试启动 → 自动打开 UI end dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() -- 调试终止 → 自动关闭 UI end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() -- 调试退出 → 自动关闭 UI end end, dependencies = { "rcarriga/nvim-dap-ui" }, }
|