Intro
Here is this week's update on my plugin suite for Unreal Engine development in Neovim.
My stance hasn't changed: "For heavy-duty debugging, full IDEs like Visual Studio or Rider are still king."
However, there are so many times when I just want to check a variable quickly or identify a crash location without leaving my terminal. I wanted to be able to do "light debugging" right inside Neovim.
So, this week, I released a debugging plugin to grant that wish, along with a specialized file explorer dedicated to the Unreal Engine project structure.
- UDB.nvim: A zero-config debugger bridge (no
launch.jsonneeded!). - UNX.nvim: A lightweight logical file viewer & symbol tree specialized for UE projects.
With these additions, I feel like Neovim has finally become a true "IDE for Unreal Engine."
β¨ UDB (Unreal Debugger Bridge)
UDB.nvim is, as the name suggests, a bridge connecting Neovim (nvim-dap) and the Unreal Engine debugging environment.
Its biggest feature is "Almost Zero-Config."
Usually, setting up a debugger requires writing a complex launch.json. UDB automates this by leveraging my other plugins:
- It uses UEP.nvim to parse the
.uproject. - It uses UBT.nvim to locate the build configuration and the
UnrealEditorbinary position.
All you basically need to do is tell UDB which DAP adapter type to use.
(Note: It defaults to codelldb).
Configuration Example
Here is a standard setup using codelldb:
-- Example setup for nvim-dap and codelldb
local dap = require("dap")
dap.adapters.codelldb = {
type = 'server',
port = "${port}",
executable = {
-- Specify the path installed via Mason or your package manager
command = vim.fn.stdpath("data") .. "/mason/bin/codelldb.cmd",
args = {"--port", "${port}"},
detached = false,
}
}
If you want to use your own custom DAP adapter, just change the adapter_type in the UDB setup:
require("UDB").setup({
debugger = {
adapter_type = "codelldb", -- Default DAP adapter
},
})
What can it do?
-
Debug Immediately: Just run
:UDB run_debug. It identifies the correct binary, attaches the debugger via the DAP adapter, and launches. -
Flexible Target Switching: Whether you want to "Launch the Editor to debug Blueprints" or "Launch as a Standalone Game," you can select it via a picker using
:UDB run_debug!. -
Seamless Build Integration: If you have [UBT.nvim] and [UEP.nvim] installed, UDB automatically reads your current build config (e.g.,
DebugGame/Development Editor). It remembers the last configuration built by UBT, so if you runUBT debug!to switch targets,UDB run_debugwill immediately launch that exact configuration.
Installation
You need nvim-dap and an adapter like codelldb.
{
"taku25/UDB.nvim",
dependencies = {
"mfussenegger/nvim-dap",
"taku25/UEP.nvim",
"taku25/UBT.nvim",
{ "taku25/UNL.nvim", lazy=false }
},
}
π UNX (Unreal Neovim eXplorer): Breaking Free from Physical Folders
Next up is the specialized explorer, UNX.nvim.
Previously, I extended neo-tree.nvim to handle UE projects, but I wanted to see information more specific to UE development and didn't want to force users to install a specific general-purpose filer just for UEP. So, I built this as a completely standalone plugin.
Feature: The "Logical View"
Unlike generic file explorers, UNX visualizes the tree based on the mental model of Unreal Engine C++ development.
-
Logical View: You don't need to dig through deep physical file layers (
Source/ProjectName/...). It displays the tree in a logical module structure: "Game", "Plugins", and "Engine". - Symbol View: It automatically displays classes, functions, and properties contained in the selected C++ file in the bottom side panel. You can grasp the structure without even opening the header file.
- Git/VCS Integration: Asynchronously fetches status and highlights modified files with icons.
-
Class Creation (UCM Integration): You can manage C++ classes directly from the tree using simple hotkeys:
-
a: Add Class -
d: Delete -
r: Rename -
A: Make Directory -
m: Switch Mode
-
Installation
{
"taku25/UNX.nvim",
dependencies = {
"taku25/UCM.nvim",
{ "taku25/UNL.nvim", lazy = false }
},
opts = {},
}
Summary: A Complete Dev Cycle in Neovim
By combining the two plugins introduced today with my existing suite, the workflow is now effectively complete entirely within Neovim:
- UEP (Project): Parses project information.
- UNX (Explorer): Logical view for file management.
- UCM (Class Manager): Create and delete C++ classes.
- UBT (Build Tool): Executes builds.
- UDB (Debugger): Runs debugging and verification.
- ULG (Log): Checks logs.
You can handle these easily by using the all-in-one suite UnrealDev.nvim.
Looking back to when I first started making UBT.nvim, it feels like I've come a long way. If you are interested in developing Unreal Engine projects with Neovim, please give it a try!
Top comments (0)