UnrealDev.nvim is a thin wrapper plugin that integrates the functionality of the Unreal Neovim Plugin Sweet suite (UEP, UBT, UCM, ULG, USH, UEA, UNX, UDB) into a single global command, :UDEV.
Its purpose is to simplify the setup of each plugin and allow all Unreal Engine-related operations to be called from a single interface.
English | ζ₯ζ¬θͺ (Japanese)
many other features
Note UnrealDev.nvim acts as a meta-plugin (wrapper) for the Unreal Engine development suite. While this specific repository primarily handles orchestration, the core features are actively developed and updated frequently in the individual modules listed below.
Detailed installation instructions, configuration, command lists, and API usage examples are all available on the GitHub Wiki.
Please refer to the wiki first when setting up or customizing.
- Unified Command Interface:
- Call all detected plugin functions from the suite (project exploration, build, class management, log viewing, shell operations, asset inspection) from the
:UDEVcommand.
- Call all detected plugin functions from the suite (project exploration, build, class management, log viewing, shell operations, asset inspection) from the
- Automatic Feature Detection:
- Auto-detects installed suite plugins (
UEP,UBT,UCM,ULG,USH,UEA) viapcalland provides commands only for those that are available.
- Auto-detects installed suite plugins (
- Unified API:
- Access all available suite plugin API functions via
require('UnrealDev.api'), making it easy to create keymaps and automation.
- Access all available suite plugin API functions via
- Neovim v0.11.3 or later
- Rust (Required to build the scanner for UNL.nvim)
- UNL.nvim (Required core library)
- ** Suite Plugins:** (Install any or all of these)
β
For a complete list of external tool requirements (like fd, rg) and recommended UI plugins (like telescope, neo-tree), please see the Wiki Installation Page.
Example installation for lazy.nvim.
UnrealDev.nvim should be listed, and any suite plugins you want to use should be listed as well (they are no longer hard dependencies, but peers).
return {
{
'taku25/UnrealDev.nvim',
-- Define all plugins in the development suite.
-- You can remove any plugins you don't use.
dependencies = {
{
'taku25/UNL.nvim', -- Core Library
build = "cargo build --release --manifest-path scanner/Cargo.toml",
lazy = false,
},
'taku25/UEP.nvim', -- Project Explorer
'taku25/UEA.nvim', -- Asset (Blueprint) Inspector
'taku25/UBT.nvim', -- Build Tool
'taku25/UCM.nvim', -- Class Manager
'taku25/ULG.nvim', -- Log Viewer
'taku25/USH.nvim', -- Unreal Shell
{
'taku25/UNX.nvim', -- Logical View
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-tree/nvim-web-devicons",
},
},
'taku25/UDB.nvim', -- Debug
{
'taku25/USX.nvim', -- Syntax highlight
lazy=false,
},
-- UI Plugins (Optional)
'nvim-telescope/telescope.nvim',
'j-hui/fidget.nvim',
'nvim-lualine/lualine.nvim',
{
'romus204/tree-sitter-manager.nvim',
opts = {
ensure_installed = { "cpp", "ushader", "verse" },
highlight = { "cpp", "ushader", "verse" },
border = "rounded",
languages = {
cpp = {
install_info = {
url = "https://github.com/taku25/tree-sitter-cpp",
use_repo_queries = true,
},
},
ushader = {
install_info = {
url = 'https://github.com/taku25/tree-sitter-unreal-shader',
use_repo_queries = true,
},
},
verse = {
install_info = {
url = 'https://github.com/taku25/tree-sitter-verse',
use_repo_queries = true,
},
},
},
},
config = function(_, opts)
vim.filetype.add({
extension = {
verse = "verse",
usf = "ushader",
ush = "ushader",
},
})
require("tree-sitter-manager").setup(opts)
local group = vim.api.nvim_create_augroup('MyTreesitter', { clear = true })
vim.api.nvim_create_autocmd('FileType', {
group = group,
pattern = opts.highlight,
callback = function(args)
vim.treesitter.start(args.buf)
end,
})
end,
}
-- ...
},
opts = {
-- Configuration specific to UnrealDev.nvim
-- (e.g., disable setup for plugins you don't have)
setup_modules = {
UBT = true,
UEP = true,
ULG = true,
USH = true,
UCM = true,
UEA = true,
UNX = true,
},
},
},
-- ---
-- Individual Plugin Settings (Optional)
-- ---
--{ 'taku25/UBT.nvim', opts = { ... } },
--{ 'taku25/UEP.nvim', opts = { ... } },
--{ 'taku25/UEA.nvim', opts = { ... } },
-- ...
}After installation, run the following command to ensure all dependencies, external tools (fd, rg), and the custom tree-sitter parser are correctly set up:
:checkhealth UnrealDevIf you see any Errors or Warnings, please follow the advice displayed in the checkhealth output.
β
For a complete installation example including UI plugins, and detailed opts examples for each plugin (UEP, UBT, etc.), please see the Wiki Installation Guide.
Configuration for UnrealDev.nvim itself is minimal, such as the setup_modules table shown above.
Configuration for each plugin in the suite (UEP, UBT, etc.) is done by passing opts to each plugin's spec in lazy.nvim (see installation example above).
β
For detailed configuration options for each plugin, please refer to the Wiki Configuration Page or each plugin's individual README.
All commands start with :UDEV. Only commands for installed plugins will be available.
" ===== (Examples) ===== "
" Rescan the project (from UEP)
:UDEV refresh
" Find files (from UEP)
:UDEV files
" Build a target (from UBT)
:UDEV build
" Create a new class (from UCM)
:UDEV new MyNewActor AActor
" Switch header/source (from UCM)
:UDEV switch
" Start tailing a log (from ULG)
:UDEV start_log
" Find Blueprint usages (from UEA)
:UDEV find_bp_usagesβ
For details on all UDEV subcommands, arguments, and command name conflicts (e.g., :UDEV class_delete), please see the Wiki Command Reference.
(Note: Assuming the English page for Command_ja is Commands)
You can access all available functions programmatically through the UnrealDev.api module. If a plugin is not installed, its API functions will simply be nil.
-- (Example) Map UCM's 'switch' function (safe check)
vim.keymap.set('n', '<leader>oo', function()
local api = require('UnrealDev.api')
if api.switch_file then
api.switch_file({ current_file_path = vim.api.nvim_buf_get_name(0) })
end
end, { noremap = true, silent = true, desc = "UDEV: Switch H/S file" })
-- (Example) Map UEP's 'files' function (safe check)
vim.keymap.set('n', '<leader>pf', function()
local api = require('UnrealDev.api')
if api.files then
api.files({})
end
end, { desc = "UDEV: Find project files" })Unreal Engine Related Plugins:
- UnrealDev.nvim
- Recommended: An all-in-one suite to install and manage all these Unreal Engine related plugins at once.
- UNX.nvim
- Standard: A dedicated explorer and sidebar optimized for Unreal Engine development. It visualizes project structure, class hierarchies, and profiling insights without depending on external file tree plugins.
- UEP.nvim
- Analyzes .uproject to simplify file navigation.
- UEA.nvim
- Finds Blueprint usages of C++ classes.
- UBT.nvim
- Use Build, GenerateClangDataBase, etc., asynchronously from Neovim.
- UCM.nvim
- Add or delete classes from Neovim.
- ULG.nvim
- View UE logs, LiveCoding, stat fps, etc., from Neovim.
- USH.nvim
- Interact with ushell from Neovim.
- USX.nvim
- Plugin for highlight settings for tree-sitter-unreal-cpp and tree-sitter-unreal-shader.
- tree-sitter for Unreal Engine
- Provides syntax highlighting using tree-sitter, including UCLASS, etc.
- tree-sitter for Unreal Engine Shader
- Provides syntax highlighting for Unreal Shaders like .usf, .ush.
- blink-cmp-unreal
- A completion source for blink-cmp, providing intelligent suggestions for Unreal Engine C++ using UEP.nvim database and tree-sitter.
MIT License
Copyright (c) 2025 taku25
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.







