LazyVim 默认集成了 nvim-dapnvim-dap-ui,用于调试功能(DAP = Debug Adapter Protocol)。


📦 默认的调试插件(LazyVim 中)包括:

  • mfussenegger/nvim-dap:核心 DAP 支持
  • rcarriga/nvim-dap-ui:图形化调试界面
  • jay-babu/mason-nvim-dap.nvim:DAP 适配器安装器(配合 mason 使用)

🧩 默认快捷键(来自 LazyVim 的 which-key 配置)

在 Normal 模式下按 <leader>d 后,会显示 DAP 的全部快捷键,默认如下:

快捷键 功能说明
<leader>db 切换断点(Toggle Breakpoint)
<leader>dc 启动或继续执行(Continue)
<leader>dC 运行到光标(Run to Cursor)
<leader>di 单步进入(Step Into)
<leader>do 单步跳出(Step Out)
<leader>dO 单步跳过(Step Over)
<leader>dp 暂停(Pause)
<leader>dr 重新开始调试(Restart)
<leader>dq 终止调试(Quit / Close)
<leader>du 打开/关闭 UI 窗口(Toggle UI)
<leader>dh 悬停查看变量(Hover)
<leader>df 查看栈帧(Frame)
<leader>ds 查看变量(Scopes)
<leader>dl 查看日志输出(REPL)

🧭 查看所有 LazyVim 快捷键的方式

在 Neovim 中按:

<leader>dk

如果你有 which-key 插件,会列出所有和调试相关的命令。


🛠️ 附加建议

你可以通过执行以下命令查看当前启用的调试配置:

:lua require("dap").adapters
:lua require("dap").configurations

🧰 如果想自定义快捷键:

你可以在 ~/.config/nvim/lua/plugins/dap.lua(或类似)添加自定义 keymap,比如:

vim.keymap.set("n", "<F5>", function() require("dap").continue() end)
vim.keymap.set("n", "<F9>", function() require("dap").toggle_breakpoint() end)

换成 vscode 配置快捷键

return {
  -- 这是一个配置模块,不安装新插件
  {
    "mfussenegger/nvim-dap",
    config = function()
      local dap = require("dap")
      local dapui = require("dapui")

      -- 你可以绑定调试相关的键位到 F 键
      vim.keymap.set("n", "<F5>", function()
        dap.continue()
      end, { desc = "Debug: Start/Continue" })
      vim.keymap.set("n", "<F9>", function()
        dap.toggle_breakpoint()
      end, { desc = "Debug: Toggle Breakpoint" })
      vim.keymap.set("n", "<F10>", function()
        dap.step_over()
      end, { desc = "Debug: Step Over" })
      vim.keymap.set("n", "<F11>", function()
        dap.step_into()
      end, { desc = "Debug: Step Into" })
      vim.keymap.set("n", "<S-F11>", function()
        dap.step_out()
      end, { desc = "Debug: Step Out" })
      vim.keymap.set("n", "<F12>", function()
        dapui.toggle()
      end, { desc = "Debug: Toggle UI" })
      vim.keymap.set("n", "<S-F5>", function()
        dap.terminate()
      end, { desc = "Debug: Terminate" })
    end,
  },
}