Unity Editor上で動作するVim風テキストエディタ
UniEditは、Unity Editor内でmanifest.jsonやasmdefファイルなどのテキストファイルを編集するためのエディタ拡張です。 Vimライクなモーダル編集システムを採用し、効率的なテキスト編集を可能にします。
- Normal Mode: 移動・編集コマンドの実行
- Insert Mode: テキスト入力
- Command Mode: Exコマンドの実行(:w, :e, :q など)
- Visual Mode: テキスト選択(文字単位、行単位、矩形選択)
- Search Mode: 前方・後方検索
- 移動: h, j, k, l, w, b, e, 0, $, gg, G
- 編集: i, a, x, dd, yy, p
- ファイル操作: :w, :e, :q, :q!, :w
- 検索: /, ?, n, N
- Undo/Redo: u, Ctrl+r
- ビジュアルモード: v(文字選択), V(行選択), Ctrl+v(矩形選択)
- レジスタ: "a-z, "0-9 による名前付きレジスタ
- AssetDatabase自動リフレッシュ
- Unity Editorテーマとの統合
- EditorWindowとしての実装
- Unity 2022.3.42f1 (2022.3 LTS)
- UI Toolkit (UIElements)
- C# (.NET Standard 2.1)
Assets/UniEdit/
├── Editor/ # エディタ拡張コード
│ ├── UI/ # EditorWindowとUIコンポーネント
│ ├── Application/ # モード管理とユースケース
│ ├── Domain/ # コアエンティティとインターフェース
│ ├── Infrastructure/ # ファイルシステムとUnity API
│ └── Tests/ # エディタテスト
└── package.json # UPMパッケージ定義
クリーンアーキテクチャを採用し、以下の層で構成されています:
- UIレイヤー: EditorWindowとUI Toolkitコンポーネント
- アプリケーションレイヤー: モード管理とビジネスロジック
- ドメインレイヤー: コアエンティティとビジネスルール
- インフラストラクチャレイヤー: ファイルI/OとUnity統合
主要なパターン:
- State Pattern: モーダル編集システム
- Command Pattern: 操作の実装
- Repository Pattern: データアクセス
- Observer Pattern: イベントハンドリング
- Window > Package Manager を開く
- 「+」ボタン > Add package from git URL...
- 以下のURLを入力:
https://github.com/bigdra50/UniEdit.git?path=Assets/UniEdit
- このリポジトリをクローン
- Window > Package Manager > 「+」 > Add package from disk...
Assets/UniEdit/package.jsonを選択
Packages/manifest.jsonに以下を追加:
{
"dependencies": {
"com.bigdra.uniedit": "file:../UniEdit/Assets/UniEdit"
}
}- Unity Editorのメニューから
Window > UniEditを選択 - 開きたいファイルを
:e <filepath>で開く - Vimライクなコマンドで編集
- モード切替: ESCでNormal Mode、iでInsert Mode
- ファイル保存: Normal Modeで
:w - エディタ終了:
:qまたは:q!(未保存の変更を破棄)
Unity Editorで自動的にコンパイルされます。 asmdefファイルによりEditor専用アセンブリとして構成されています。
- Window > General > Test Runner を開く
- EditModeタブを選択
- UniEdit のテストを実行
- 単体テスト: ドメインエンティティ、値オブジェクト、コマンド
- 統合テスト: モード遷移、コマンドチェーン、E2Eシナリオ
- パフォーマンステスト: 大規模ファイル処理、メモリリーク検証
- Unity固有テスト: AssetDatabase、EditorWindow、テーマ統合
- 要件をdocs/requirement.mdで確認
- 設計をdocs/design.mdに基づいて実装
- 適切なレイヤーにコードを配置
- テストを作成
- 動作確認
- C#標準の命名規則に従う
- publicメソッドにはXMLドキュメントコメントを記述
- Unity固有の動作にはコメントを追加
- エラーハンドリングを適切に実装
- gitmoji形式のプレフィックスを使用
- 日本語でコミットメッセージを記述
- 変更の理由を明確に記載
- Unity 2022.3 LTS以降を使用しているか確認
- asmdefの参照が正しく設定されているか確認
- Window > UniEdit から起動
- Console でエラーログを確認
- ファイルの書き込み権限を確認
- Unity Editorがファイルをロックしていないか確認
- マルチバイト文字(日本語など)の編集は未対応
- 非常に大きなファイル(10MB以上)では動作が遅くなる可能性あり
- 一部のVimコマンドは未実装
MITライセンス