はじめに
こんにちは、NeovimでUnreal Engine開発を快適にするために、狂ったようにプラグインを作り続けている者です。
最近はNeovimをUnreal Engine用のIDE(RiderやVS)に近づけるべく、様々な機能を開発しています。
今週は、UE開発者なら誰もが頭を抱える「コンフィグ設定(.ini)」を爆速で確認できる機能や、コーディング速度をブーストするナビゲーション機能などを追加しました。
⚠ 重要:1. Treesitter-unreal-cpp のアップデートについて
今回のアップデートを利用するには、この手順が必須になります。
Unreal C++の解析精度を上げるためにパーサーを更新しましたが、Treesitterの仕様上、リビジョン番号を手動で更新する必要があります。
AActor等のクラス解析、Symbols View、そして後述する Goto Super 等が正しく動作するために、以下の設定でプラグイン設定を上書きしてくださいWikiも更新済みです。
{
'nvim-treesitter/nvim-treesitter',
branch = "main",
config = function(_, opts)
vim.api.nvim_create_autocmd('User', { pattern = 'TSUpdate',
callback = function()
local parsers = require('nvim-treesitter.parsers')
parsers.cpp = {
install_info = {
url = 'https://github.com/taku25/tree-sitter-unreal-cpp',
-- 以前の 89f34... から以下のハッシュへ更新してください
revision = '67198f1b35e052c6dbd587492ad53168d18a19a8',
},
}
parsers.ushader = {
install_info = {
url = 'https://github.com/taku25/tree-sitter-unreal-shader',
revision = '26f0617475bb5d5accb4d55bd4cc5facbca81bbd',
},
}
end
})
-- (中略: インストール設定など)
end
}
2. 【目玉機能】Config Explorerの実装: コンフィグ地獄からの解放
Unreal Engineのコンフィグ(.ini)システムは強力ですが、複雑怪奇です。
Engine/Config/Base.ini から始まり、プロジェクトの DefaultEngine.ini、さらにプラットフォーム固有の WindowsEngine.ini、果ては DeviceProfiles まで...。
「結局、このパラメータの最終値はいくつなんだ?」「どこで上書きされたんだ?」 と迷子になった経験はありませんか?
これを解決するために、Config Explorer を実装しました。
機能の特徴:
- 階層表示: プロジェクトに関連する設定値を、プラットフォームごとにツリー表示します。
-
継承の可視化:
Default設定だけでなく、Windows,Android,iOSなどのプラットフォーム固有の設定、さらにはAndroid_Lowといったデバイスプロファイルの設定もマージして表示します。 - 履歴追跡: あるパラメータが「どのファイルの何行目で、どう変更されたか(上書き、追加、削除)」の履歴を追跡できます。
-
ジャンプ機能: 履歴を選択すれば、定義元の
.iniファイルへ即座にジャンプできます。
↑ 実際のプロジェクトのiniを解析し、最終値とオーバーライド履歴を一撃で表示しています
3. Implement Virtual: オーバーライドの自動生成
C++で親クラスの virtual 関数をオーバーライドする際、ヘッダーファイルを行き来してシグネチャをコピペするのは面倒です。
RiderやVSにはある「Override function...」機能を、Neovimにも実装しました。
- 現在のクラスの継承チェーンを遡り、オーバーライド可能な
virtual関数をリストアップ。 - Pickerで選択するだけで、ヘッダーの宣言 (
override付き) をコードに追加し、.cpp側の実装コードをクリップボードにコピーします
4. Goto Super Definition / Implementation
「この関数、親クラスではどういう実装になってるんだっけ?」と思った時、これまではgrepしたりLSPの階層表示を辿ったりしていましたが、これからは一発です。
-
:UDEV goto_super_def: 親クラスの関数定義(ヘッダー)へジャンプ。 -
:UDEV goto_super_impl: 親クラスの実装(ソースコード)へジャンプ。
カーソル位置の関数名を認識し、継承ツリーを賢く探索してジャンプします。
5. Symbols View の最適化(遅延初期化)
プロジェクトが巨大化するにつれて、クラスや関数のシンボルツリー(Symbols View)の初期化コストが気になり始めていました。
今回のアップデートで、「表示が必要になった瞬間」に初めて解析・初期化を行うようにアーキテクチャを刷新しました。
これにより、Neovimの起動速度やファイルを開くレスポンスが大幅に向上しています。
6. Find Module: モジュール名の逆引き&コピー
Unreal C++を書いていると、「このクラスを使いたいけど、Build.cs にどのモジュールを追加すればいいんだっけ?」 となることは日常茶飯事です。
-
:UEP find_module: クラス一覧をピッカーで表示し、選択したクラスが所属するモジュール名(例:"Core","UMG","Niagara")を特定して、ダブルクォーテーション付きでクリップボードにコピーします。
あとは Build.cs の PublicDependencyModuleNames.AddRange 内にペーストするだけです。地味ですが、確実に時間を節約してくれます。

7. その他の改善
細かいですが、痒い所に手が届く修正を行っています。
- UCM switch: Engine/Classes系のファイルパスに対応。
- UEP find_parents: UObjectに対応(継承ツリーが見やすくなりました)。
- UEP tree: Plugin内のプロジェクトファイルが非表示になってしまうバグを修正。
- UNL: INIファイルの解析機能追加、CPPパーサーの共通化など内部エンジンの強化。
おわりに
今週のアップデートで、Neovimがより便利な「Unreal Engine特化型IDE」に近づいてきました。
特に Config Explorer は、他の商用IDEでも標準ではなかなか見られない機能だと自負しています。
もし「便利そうだな」「応援してやろうかな」と思っていただけたら、ぜひリポジトリを覗いてみてください。
おかげさまでClone数は増えてきましたが、Star数がまだまだ少ないのが最近の悩みです(笑)。 Starをいただけると、次なる機能開発の励みになります!
[リポジトリへのリンク]
- UnrealDev.nvim (統合プラグイン): [https://github.com/taku25/UnrealDev.nvim]
- UEP.nvim (解析エンジン): [https://github.com/taku25/UEP.nvim]
- UNX.nvim (UIエクスプローラー): [https://github.com/taku25/UNX.nvim]


