Unreal Engineの開発をNeovimで行うためのプラグイン群(taku25/unrealdev.nvim)を開発しています。
早速ですが、今週のアップデート情報をお届けします。今回はIDEとの連携強化とUNX.nvimの機能拡張がメインです。
1. UEP.nvim: IDEとの双方向連携を強化
Neovimサーバーの自動起動に対応
UEP start 実行時に、Neovimのサーバー機能を自動的に起動するように変更しました。
これにより、IDE(RiderやVisual Studio)から、現在開いているNeovimインスタンスでファイルを開くといった連携がスムーズに行えるようになります。
サーバー名は UEP.nvim のオプションで変更可能です。
server = {
enable = true,
name = "UEP_nvim", -- 任意のサーバー名
},
注意 (Windows環境):
Windows環境では、指定したサーバー名に自動的に.pipeが付与されます。外部ツールから接続する際はご注意ください。
設定例: JetBrains Rider から Neovim で開く
Riderの「外部ツール」に設定を追加することで、右クリックメニューなどからNeovimへジャンプできます。
- 設定メニュー から Tools -> External Tools を選択
- 以下のように設定します:
-
Program:
nvim.exe -
Arguments:
--server \\.\pipe\UEP_nvim --remote-send "<C-\><C-n>:e $FilePath$<CR>:$LineNumber$<CR>zz"
引数の解説:
このコマンドは、Neovimに対して「ノーマルモードに戻る -> ファイルを開く -> 指定行へ移動 -> 画面中央へスクロール」という操作を送信しています。
2. UEP.nvim: NeovimからIDEを開く (open_ide)
逆に、現在Neovimで編集中のファイルをIDEで開く機能 UEP open_ide を追加しました。
このコマンドは config でカスタマイズ可能です。デフォルトではRiderを想定していますが、設定を変更すればVisual StudioやVS Codeでも動作します。
ide = {
-- Riderの場合 (デフォルト)
open_command = "rider --line {line} \"{file}\"",
-- VS Codeの場合の例
-- open_command = "code -g {file}:{line}",
-- Visual Studioの場合の例 (devenvのパスは環境に合わせて調整してください)
-- open_command = "devenv /edit {file} /command \"Edit.GoTo {line}\"",
},
3. UNX.nvim: プロジェクトツリーとDiff機能の強化
UI周りを担う UNX.nvim にも便利な機能を追加しました。
プロジェクトツリーからIDEを開く
プロジェクトツリー上でファイルを選択し <C-o> を押すことで、そのファイルをIDEで開くことができるようになりました(前述の open_ide 設定が使用されます)。
Diff表示のサポート
プロジェクトツリー上で D キーを押すことで、Neovim標準のVCS機能を使ったDiff(差分)表示が可能になりました。変更点を素早く確認したい場合に便利です。
ユーザー定義関数の実行(カスタムキーマップ)
「標準のDiffが見にくいので自前のコマンドを使いたい」「特定のファイルに対してカスタムアクションを実行したい」といった要望に応えるため、ユーザー関数をキーマップに割り当てられるようになりました。
config 内で以下のように定義します。
keymaps = {
custom = {
-- キー = 実行したい関数
["<leader>p"] = function(node)
-- node には現在の行のファイル情報が入っています
if node and node.path then
print("Selected file path: " .. node.path)
end
end,
-- 名前付きアクションとしての定義も可能(将来的な拡張用)
["<C-z>"] = {
action = function(node)
vim.notify("Custom action for: " .. (node.name or "unknown"))
end,
desc = "My custom notification"
}
}
}
今後の展望
今週のアップデートは以上です。
来週以降は、データベース(DB)機能の拡張に加え、Rust + Tree-sitter を活用した詳細な解析機能の実装に着手する予定です。
LSPだけに頼らない、Unreal Engine特有の構造を理解した強力な補完周りを作っていこうと考えています。
実験的ではありますが、すでに UNL.nvim にて scanner というRustプログラムの導入も始めています。
UEの開発をNeovimで快適に行えるよう、今後もより一層機能を充実させていきます!

