Skip to content

bigdra50/UniEdit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UniEdit

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 による名前付きレジスタ

Unity統合

  • 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: イベントハンドリング

インストール

Package Manager経由

  1. Window > Package Manager を開く
  2. 「+」ボタン > Add package from git URL...
  3. 以下のURLを入力:
    https://github.com/bigdra50/UniEdit.git?path=Assets/UniEdit
    

ローカルパッケージとして

  1. このリポジトリをクローン
  2. Window > Package Manager > 「+」 > Add package from disk...
  3. Assets/UniEdit/package.json を選択

manifest.json直接編集

Packages/manifest.jsonに以下を追加:

{
  "dependencies": {
    "com.bigdra.uniedit": "file:../UniEdit/Assets/UniEdit"
  }
}

使用方法

エディタの起動

  1. Unity Editorのメニューから Window > UniEdit を選択
  2. 開きたいファイルを :e <filepath> で開く
  3. Vimライクなコマンドで編集

基本的な操作

  • モード切替: ESCでNormal Mode、iでInsert Mode
  • ファイル保存: Normal Modeで :w
  • エディタ終了: :q または :q!(未保存の変更を破棄)

ビルドとテスト

ビルド

Unity Editorで自動的にコンパイルされます。 asmdefファイルによりEditor専用アセンブリとして構成されています。

テスト実行

  1. Window > General > Test Runner を開く
  2. EditModeタブを選択
  3. UniEdit のテストを実行

テストカバレッジ

  • 単体テスト: ドメインエンティティ、値オブジェクト、コマンド
  • 統合テスト: モード遷移、コマンドチェーン、E2Eシナリオ
  • パフォーマンステスト: 大規模ファイル処理、メモリリーク検証
  • Unity固有テスト: AssetDatabase、EditorWindow、テーマ統合

開発手順

新機能の追加

  1. 要件をdocs/requirement.mdで確認
  2. 設計をdocs/design.mdに基づいて実装
  3. 適切なレイヤーにコードを配置
  4. テストを作成
  5. 動作確認

コーディング規約

  • C#標準の命名規則に従う
  • publicメソッドにはXMLドキュメントコメントを記述
  • Unity固有の動作にはコメントを追加
  • エラーハンドリングを適切に実装

コミット規約

  • gitmoji形式のプレフィックスを使用
  • 日本語でコミットメッセージを記述
  • 変更の理由を明確に記載

トラブルシューティング

コンパイルエラー

  • Unity 2022.3 LTS以降を使用しているか確認
  • asmdefの参照が正しく設定されているか確認

エディタが開かない

  • Window > UniEdit から起動
  • Console でエラーログを確認

ファイルが保存されない

  • ファイルの書き込み権限を確認
  • Unity Editorがファイルをロックしていないか確認

既知の制限事項

  • マルチバイト文字(日本語など)の編集は未対応
  • 非常に大きなファイル(10MB以上)では動作が遅くなる可能性あり
  • 一部のVimコマンドは未実装

ライセンス

MITライセンス

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors