rufio 0.50.0 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,53 +1,57 @@
1
1
  # rufio
2
2
 
3
- Ruby製のターミナルベースファイルマネージャー
3
+ **Runtime Unified Flow I/O Operator**
4
4
 
5
- **日本語** | [English](./README_EN.md)
5
+ ファイルを起点に、ツールとスクリプトを実行・連携させるTUIファイルマネージャー。
6
+ Ruby/Python/PowerShellに対応し、開発ワークフローを一箇所に統合します。
7
+
8
+ A TUI file manager as a unified runtime environment for tools and scripts.
6
9
 
7
- ## 概要
10
+ **日本語** | [English](./README_EN.md)
8
11
 
9
- rufioは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、DSLコマンドによる拡張機能を備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。
12
+ ## コンセプト
10
13
 
11
- ### 🚀 v0.33.0の重要な更新
14
+ rufioは単なるファイルマネージャーではありません。**ツールランタイム実行環境**です。
12
15
 
13
- - **🚨 重大なパフォーマンス改善**: ファイルプレビューが40-86倍高速化(80ms → 1-2ms)
14
- - **⚡ Zig実装追加**: 最小バイナリサイズ(52.6 KB)のネイティブスキャナー
15
- - **📊 YJIT対応**: Ruby 3.4+ のJITコンパイラで全体的な性能向上
16
+ ```
17
+ ┌─────────────────────────────────────────────────────────┐
18
+ │ rufio │
19
+ │ Runtime Unified Flow I/O Operator │
20
+ ├─────────────────────────────────────────────────────────┤
21
+ │ Files ──→ Scripts ──→ Tools ──→ Output │
22
+ │ ↑ │ │
23
+ │ └───────────── Feedback ────────────┘ │
24
+ └─────────────────────────────────────────────────────────┘
25
+ ```
16
26
 
17
- 詳細は [CHANGELOG v0.33.0](./docs/CHANGELOG_v0.33.0.md) を参照してください。
27
+ - **ファイル操作**: 従来のファイルマネージャー機能
28
+ - **スクリプト実行**: Ruby/Python/PowerShellスクリプトをファイルコンテキストで実行
29
+ - **ツール連携**: 外部ツール(git, fzf, rga等)とのシームレスな統合
30
+ - **統一I/O**: すべての入出力を単一のフローで管理
18
31
 
19
32
  ## 特徴
20
33
 
21
- - **軽量でシンプル**: Rubyで書かれた軽量なファイルマネージャー
22
- - **直感的な操作**: Vimライクなキーバインド
23
- - **DSLコマンドシステム** (v0.50.0): 拡張可能なDSLベースのコマンド定義
24
- - **強力なコマンドモード** (v0.32.0):
25
- - シェルコマンド実行 (`!ls`, `!git status` など)
26
- - コマンド履歴(上下矢印キーでナビゲーション)
27
- - インテリジェントなTab補完(候補リスト表示)
28
- - DSLコマンドによる拡張可能なコマンド
29
- - **バックグラウンドコマンド実行** (v0.33.0):
30
- - `:!command` でシェルコマンドを非同期実行
31
- - 実行中もrufioの操作が可能
32
- - 完了時に通知メッセージを表示
33
- - 実行結果を自動的にログファイルに保存
34
- - **実行ログビューワ** (v0.33.0):
35
- - `L`キーでコマンド実行ログを閲覧
36
- - ログファイルのタイムスタンプ付き管理
37
- - ヘルプモードと同様の直感的なUI
38
- - **高速ファイルプレビュー** (v0.33.0最適化):
39
- - 大幅な性能改善(40-86倍高速化)
40
- - 大規模ファイルも瞬時に表示(< 2ms)
41
- - スムーズなスクロールと快適な操作性
42
- - **ファイル選択・操作**: 複数ファイルの選択、移動、コピー、削除が可能
43
- - **リアルタイムフィルター**: sキーでファイル名の絞り込み表示
44
- - **高度な検索機能**: fzfとrgaを使った強力な検索
45
- - **マルチプラットフォーム**: macOS、Linux、Windowsで動作
46
- - **外部エディタ連携**: お気に入りのエディタでファイルを開く
47
- - **ヘルスチェック**: システム依存関係の確認機能
48
- - **ステータスバー**: 処理時間、現在時刻、バージョン情報をリアルタイム表示
49
- - **ブックマーク一覧表示**: フッタに1-9のブックマークを番号付きで表示
50
- - **統合ヘルプシステム**: ?キーでキーバインド一覧とお知らせを表示
34
+ ### ツールランタイムとして
35
+
36
+ - **マルチ言語スクリプト対応**: Ruby, Python, PowerShell
37
+ - **スクリプトパス管理**: 複数のスクリプトディレクトリを登録・管理
38
+ - **コマンド補完**: `@`プレフィックスでスクリプトをTab補完
39
+ - **ジョブ管理**: バックグラウンドでスクリプト/コマンドを実行
40
+ - **実行ログ**: すべての実行結果を自動記録
41
+
42
+ ### ファイルマネージャーとして
43
+
44
+ - **Vimライクなキーバインド**: 直感的なナビゲーション
45
+ - **リアルタイムプレビュー**: ファイル内容を即座に表示
46
+ - **高速検索**: fzf/rgaとの連携
47
+ - **ブックマーク**: よく使うディレクトリに素早くアクセス
48
+ - **zoxide連携**: スマートなディレクトリ履歴
49
+
50
+ ### クロスプラットフォーム
51
+
52
+ - **macOS**: ネイティブサポート
53
+ - **Linux**: ネイティブサポート
54
+ - **Windows**: PowerShellスクリプト対応
51
55
 
52
56
  ## インストール
53
57
 
@@ -55,627 +59,223 @@ rufioは、Yaziにインスパイアされたターミナル上で動作する
55
59
  gem install rufio
56
60
  ```
57
61
 
58
- または、Gemfileに追加してください:
62
+ または、Gemfileに追加:
59
63
 
60
64
  ```ruby
61
65
  gem 'rufio'
62
66
  ```
63
67
 
64
- ## 使い方
68
+ ## クイックスタート
65
69
 
66
- ### 基本的な起動方法
70
+ ### 1. 起動
67
71
 
68
72
  ```bash
69
73
  rufio # カレントディレクトリで起動
70
74
  rufio /path/to # 指定したディレクトリで起動
71
75
  ```
72
76
 
73
- ### ネイティブスキャナー(実験的機能)
77
+ ### 2. スクリプトパスを登録
74
78
 
75
- rufio v0.31.0以降では、高速なディレクトリスキャンのためのネイティブ実装(Rust/Go/Zig)をサポートしています。デフォルトは安定したRuby実装を使用し、オプションでネイティブ実装に切り替え可能です。
79
+ 1. スクリプトを配置したいディレクトリに移動
80
+ 2. `B` → `2` でスクリプトパスに追加
76
81
 
77
- #### 起動オプション
82
+ ### 3. スクリプトを実行
78
83
 
79
- ```bash
80
- # デフォルト(Ruby実装 - 安定)
81
- rufio
82
-
83
- # ネイティブ実装を有効化(自動検出: Magnus > Zig > Rust > Go > Ruby)
84
- rufio --native
85
- rufio --native=auto
84
+ 1. `:` でコマンドモードを起動
85
+ 2. `@` + スクリプト名の一部を入力
86
+ 3. `Tab` で補完
87
+ 4. `Enter` で実行
86
88
 
87
- # Zig実装を使用(v0.33.0 - 実験的)
88
- rufio --native=zig
89
+ ## キーバインド
89
90
 
90
- # Rust実装を強制使用
91
- rufio --native=rust
92
- rufio --native rust /path/to/dir
91
+ ### 基本操作
93
92
 
94
- # Go実装を強制使用
95
- rufio --native=go
96
- rufio --native go /path/to/dir
93
+ | キー | 機能 |
94
+ |------|------|
95
+ | `j/k` | 上下移動 |
96
+ | `h/l` | 親/子ディレクトリ |
97
+ | `g/G` | 先頭/末尾 |
98
+ | `Enter` | ディレクトリに入る/ファイルを開く |
99
+ | `q` | 終了 |
97
100
 
98
- # 環境変数でも制御可能
99
- RUFIO_NATIVE=zig rufio
100
- RUFIO_NATIVE=rust rufio
101
- RUFIO_NATIVE=go rufio /path/to/dir
102
- ```
101
+ ### ファイル操作
103
102
 
104
- #### ネイティブ実装について
103
+ | キー | 機能 |
104
+ |------|------|
105
+ | `Space` | 選択/選択解除 |
106
+ | `o` | 外部エディタで開く |
107
+ | `a/A` | ファイル/ディレクトリ作成 |
108
+ | `r` | リネーム |
109
+ | `d` | 削除 |
110
+ | `m/c/x` | 移動/コピー/削除(選択済み) |
105
111
 
106
- - **Zig実装** (v0.33.0 - 実験的): 最小バイナリサイズ(52.6 KB)、高速、FFI不要
107
- - **Magnus (Rust)**: 最速、メモリ安全、FFI不要(バイナリ: 314 KB)
108
- - **Rust (FFI)**: 高速、メモリ安全、JSON経由
109
- - **Go (FFI)**: 高速、並行処理に優れる
110
- - **Ruby実装** (デフォルト): 依存なし、安定動作保証
112
+ ### 検索・フィルター
111
113
 
112
- **性能比較(163エントリ):**
113
- - Go (FFI): 0.242 ms(最速)
114
- - Pure Ruby + YJIT: 0.242 ms(同等)
115
- - Rust (FFI): 0.244 ms
116
- - Zig: 0.253 ms(最小バイナリ)
114
+ | キー | 機能 |
115
+ |------|------|
116
+ | `f` | フィルターモード |
117
+ | `s` | fzfでファイル検索 |
118
+ | `F` | rgaでファイル内容検索 |
117
119
 
118
- #### ビルド方法
120
+ ### ナビゲーション
119
121
 
120
- ネイティブ実装を使用するには、事前にビルドが必要です:
122
+ | キー | 機能 |
123
+ |------|------|
124
+ | `b` | ブックマーク追加 |
125
+ | `B` | ブックマークメニュー |
126
+ | `0` | 起動ディレクトリに戻る |
127
+ | `1-9` | ブックマークにジャンプ |
128
+ | `z` | zoxide履歴 |
121
129
 
122
- ```bash
123
- # Zig実装のビルド(v0.33.0 - 実験的)
124
- cd lib_zig/rufio_native
125
- make
126
-
127
- # Rust実装のビルド
128
- cd lib_rust/scanner
129
- cargo build --release
130
- make install
131
-
132
- # Go実装のビルド
133
- cd lib_go/scanner
134
- make install
135
- ```
130
+ ### ツールランタイム
136
131
 
137
- **必要な開発ツール:**
138
- - Zig: Zig 0.15.2以降(`brew install zig` または https://ziglang.org/)
139
- - Rust: Cargo(`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`)
140
- - Go: Go 1.16以降(`brew install go` または https://golang.org/)
132
+ | キー | 機能 |
133
+ |------|------|
134
+ | `:` | コマンドモード |
135
+ | `J` | ジョブモード |
136
+ | `L` | 実行ログ表示 |
137
+ | `?` | ヘルプ |
141
138
 
142
- #### 注意事項
139
+ ## コマンドモード
143
140
 
144
- - ネイティブ実装は実験的機能です
145
- - デフォルトではRuby実装を使用(`--native`オプションなし)
146
- - ネイティブライブラリがない場合、自動的にRuby実装にフォールバック
147
- - gemインストール時はネイティブライブラリが含まれます(ビルド不要)
141
+ `:` でコマンドモードを起動し、様々なコマンドを実行できます。
148
142
 
149
- ### ヘルスチェック
143
+ ### スクリプト実行
150
144
 
151
- ```bash
152
- rufio -c # システム依存関係をチェック
153
- rufio --check-health # 上記と同じ
154
- rufio --help # ヘルプメッセージを表示
155
- ```
156
-
157
- ### キーバインド一覧
158
-
159
- #### 基本ナビゲーション
160
-
161
- | キー | 機能 |
162
- | ------------- | ---------------------------------- |
163
- | `j` | 下に移動 |
164
- | `k` | 上に移動 |
165
- | `h` | 親ディレクトリに移動 |
166
- | `l` / `Enter` | ディレクトリに入る・ファイルを選択 |
167
-
168
- #### 高速ナビゲーション
169
-
170
- | キー | 機能 |
171
- | ---- | ------------------ |
172
- | `g` | リストの先頭に移動 |
173
- | `G` | リストの末尾に移動 |
174
-
175
- #### ファイル操作
176
-
177
- | キー | 機能 |
178
- | ---- | -------------------------------------------------- |
179
- | `o` | 選択中のファイルを外部エディタで開く |
180
- | `e` | 現在のディレクトリをファイルエクスプローラーで開く |
181
- | `R` | ディレクトリ内容を更新 |
182
- | `r` | ファイル・ディレクトリ名をリネーム |
183
- | `d` | ファイル・ディレクトリを削除(確認ダイアログ付き) |
184
- | `a` | 新しいファイルを作成(ダイアログ入力) |
185
- | `A` | 新しいディレクトリを作成(ダイアログ入力) |
186
-
187
- #### ファイル選択・操作
188
-
189
- | キー | 機能 |
190
- | ------- | ---------------------------------------------------- |
191
- | `Space` | ファイル・ディレクトリを選択・選択解除(複数選択可) |
192
- | `m` | 選択したアイテムをカレントディレクトリに移動 |
193
- | `c` | 選択したアイテムをカレントディレクトリにコピー |
194
- | `x` | 選択したアイテムを削除 |
195
-
196
- #### リアルタイムフィルター機能
197
-
198
- | キー | 機能 |
199
- | ----------- | ------------------------------------------ |
200
- | `f` | フィルターモード開始・再編集 |
201
- | 文字入力 | ファイル名で絞り込み(フィルターモード中) |
202
- | `Enter` | フィルター維持で通常モードに戻る |
203
- | `ESC` | フィルターをクリアして通常モードに戻る |
204
- | `Backspace` | 文字削除(フィルターモード中) |
205
-
206
- #### 検索機能
207
-
208
- | キー | 機能 |
209
- | ---- | ----------------------------------------- |
210
- | `s` | fzfによるファイル名検索(プレビュー付き) |
211
- | `F` | rgaによるファイル内容検索 |
212
-
213
- #### ブックマーク機能
214
-
215
- | キー | 機能 |
216
- | --------- | ------------------------------------ |
217
- | `b` | 現在のディレクトリをブックマークに追加 |
218
- | `P` | プロジェクトモードに入る (v0.33.0で変更) |
219
- | `0` | 起動したディレクトリに移動 |
220
- | `1`-`9` | 対応する番号のブックマークに移動 |
221
-
222
- #### zoxide連携機能
223
-
224
- | キー | 機能 |
225
- | ---- | ---------------------------------- |
226
- | `z` | zoxide履歴からディレクトリを選択移動 |
227
-
228
- #### コマンドモード (v0.32.0 強化版)
229
-
230
- | キー | 機能 |
231
- | ------ | ---------------------------------------- |
232
- | `:` | コマンドモードを起動 |
233
- | `Tab` | コマンド補完・候補リスト表示(コマンドモード中)|
234
- | `↑` | 前のコマンドを表示(コマンドモード中) |
235
- | `↓` | 次のコマンドを表示(コマンドモード中) |
236
- | `Enter`| コマンドを実行(コマンドモード中) |
237
- | `ESC` | コマンドモードをキャンセル(コマンドモード中) |
238
-
239
- **シェルコマンド実行** (v0.32.0):
240
145
  ```
241
- :!ls -la # ファイル一覧を表示
242
- :!git status # Gitステータスを確認
243
- :!pwd # 現在のディレクトリを表示
146
+ :@build # @で始まるとスクリプト補完
147
+ :@deploy.rb # 登録済みスクリプトを実行
244
148
  ```
245
149
 
246
- **バックグラウンド実行** (v0.33.0):
247
- - `:!command` でシェルコマンドを非同期実行
248
- - 実行中もrufioの操作が可能
249
- - 完了時に通知メッセージを3秒間表示
250
- - 実行結果は自動的に `~/.config/rufio/log/` に保存
150
+ ### シェルコマンド
251
151
 
252
- **DSLコマンド** (v0.50.0):
253
152
  ```
254
- :hello # Hello DSLコマンドを実行
255
- :stop # rufioを終了
153
+ :!git status # !で始まるとシェルコマンド
154
+ :!ls -la # バックグラウンドで実行
256
155
  ```
257
156
 
258
- #### ログビューワ (v0.33.0)
259
-
260
- | キー | 機能 |
261
- | ---- | ---------------------------------- |
262
- | `L` | コマンド実行ログを閲覧 |
263
- | `ESC`| ログビューワモードを終了 |
264
-
265
- コマンド実行ログは `~/.config/rufio/log/` に保存され、`L`キーで閲覧できます。
266
-
267
- #### ヘルプ
268
-
269
- | キー | 機能 |
270
- | ---- | ---------------------------------- |
271
- | `?` | キーバインド一覧とお知らせを表示 |
272
-
273
- #### システム操作
274
-
275
- | キー | 機能 |
276
- | ---- | ------------ |
277
- | `q` | rufioを終了 |
278
-
279
- ### ファイル選択・操作機能の詳細
280
-
281
- #### ファイル・ディレクトリ選択 (`Space`)
282
-
283
- - **選択・選択解除**: `Space`キーでファイルやディレクトリを選択・選択解除
284
- - **複数選択**: 複数のファイルやディレクトリを同時に選択可能
285
- - **視覚的表示**: 選択されたアイテムは✓マークと緑色の背景で表示
286
-
287
- #### ファイル操作
288
-
289
- | 操作 | キー | 機能 |
290
- | ---------- | ---- | ---------------------------------------- |
291
- | **移動** | `m` | 選択したアイテムをカレントディレクトリに移動 |
292
- | **コピー** | `c` | 選択したアイテムをカレントディレクトリにコピー |
293
- | **削除** | `x` | 選択したアイテムを削除 |
294
-
295
- #### 削除操作の詳細
296
-
297
- - **フローティングダイアログ確認**: モダンなフローティングウィンドウで明確な選択肢を表示
298
- - **視覚的フィードバック**: 赤い枠線と警告色で注意を引く
299
- - **安全な操作**: 削除前のダブルチェック
300
- - **包括的エラーハンドリング**: 削除失敗時の詳細なエラーメッセージ
301
- - **リアルタイム結果表示**: フローティングダイアログで成功/失敗数を表示
302
- - **ファイルシステム検証**: 成功報告前に実際の削除を確認
303
- - **デバッグサポート**: BENIYA_DEBUG=1でオプションのデバッグログ出力
304
-
305
- #### 操作の流れ
306
-
307
- ```
308
- 1. Space → ファイル・ディレクトリを選択(複数選択可)
309
- 2. 操作キーを選択:
310
- - m → カレントディレクトリに移動
311
- - c → カレントディレクトリにコピー
312
- - x → 削除
313
- 3. フローティングダイアログ → Y/Nで確認、ESCでキャンセル
314
- 4. 操作完了 → 選択解除、画面更新
315
- ```
316
-
317
- #### 安全機能
318
-
319
- - **フローティング確認ダイアログ**: 確認用のモダンなフローティングウィンドウインターフェース
320
- - **視覚警告システム**: 危険な操作時の赤い枠線と警告色
321
- - **重複チェック**: 同名ファイルがある場合は自動でスキップ
322
- - **エラーハンドリング**: 権限不足などのエラーに適切に対応
323
- - **操作ログ**: フローティングダイアログで処理結果を詳細表示
324
- - **削除後検証**: ファイルシステムから実際に削除されたことを確認
325
-
326
- ### フィルター機能の詳細
327
-
328
- #### リアルタイムフィルター (`f`)
329
-
330
- - **フィルター開始**: `f`キーを押してフィルターモードに入る
331
- - **文字入力による絞り込み**: 日本語・英数字・記号に対応
332
- - **リアルタイム更新**: 文字を入力するたびに表示が更新される
333
- - **フィルター維持**: `Enter`キーでフィルターを保持したまま通常操作に戻る
334
- - **フィルタークリア**: `ESC`キーでフィルターをクリアして通常表示に戻る
335
- - **再編集**: フィルター適用中に`f`キーで再編集モード
336
- - **文字削除**: `Backspace`で文字削除、全削除時は自動でフィルタークリア
337
-
338
- #### 使用例
339
-
340
- ```
341
- 1. f → フィルターモード開始
342
- 2. ".rb" → Rubyファイルのみ表示
343
- 3. Enter → フィルター維持で通常操作
344
- 4. j/k → フィルター結果内をナビゲーション
345
- 5. f → フィルター再編集
346
- 6. ESC → フィルタークリア
347
- ```
348
-
349
- ### 検索機能の詳細
350
-
351
- #### ファイル名検索 (`s`)
352
-
353
- - `fzf`を使用したインタラクティブなファイル名検索
354
- - リアルタイムプレビュー表示
355
- - 選択したファイルは自動で外部エディタで開かれる
356
-
357
- #### ファイル内容検索 (`F`)
358
-
359
- - `rga`(ripgrep-all)を使用した高度なファイル内容検索
360
- - PDF、Word文書、画像内テキストなども検索対象
361
- - 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く
362
-
363
- ### ブックマーク機能の詳細
364
-
365
- #### ブックマーク操作
366
-
367
- **通常モード:**
368
- - **`b`キー**: 現在のディレクトリをブックマークに追加
369
- - ディレクトリ名がタイトルに表示される
370
- - ブックマーク名を入力して追加
371
- - 重複パスは自動検出
372
- - 緑色のダイアログで表示(作成操作)
373
-
374
- **プロジェクトモード (`p`キー):**
375
- - **`SPACE`キー**: ブックマークをプロジェクトとして選択
376
- - 選択されたブックマークは✓マークと緑背景で表示
377
- - **`r`キー**: カーソル位置のブックマークをリネーム
378
- - 黄色のダイアログで入力
379
- - 前後のスペースは自動削除
380
- - **`d`キー**: カーソル位置のブックマークを削除
381
- - 赤色の確認ダイアログ表示
382
- - **`l`キー**: ログモードに入る
383
- - **`:`キー**: コマンドモード起動
384
- - **`ESC`キー**: プロジェクトモードを終了
385
-
386
- #### 高速ナビゲーション (`1`-`9`)
387
-
388
- - 数字キーでブックマークに直接ジャンプ
389
- - 最大9個のブックマークをサポート
390
- - ブックマーク情報は画面上部に表示
391
-
392
- #### ブックマークの永続化
393
-
394
- - ブックマーク情報は `~/.config/rufio/bookmarks.json` に自動保存
395
- - rufio再起動後もブックマーク情報が保持される
396
- - 名前の前後のスペースは自動削除されて保存される
397
- - JSONファイルを直接編集することも可能
398
-
399
- ### プロジェクトモード機能の詳細
400
-
401
- #### プロジェクトモード (`p`)
402
-
403
- プロジェクトモードでは、ブックマークしたディレクトリをプロジェクトとして管理できます。
404
-
405
- #### スクリプト実行機能
406
-
407
- - **スクリプトディレクトリ**: `~/.config/rufio/scripts`
408
- - 初回起動時に自動作成
409
- - `config.rb`でカスタマイズ可能
410
- - サンプルスクリプト `hello.rb` が含まれる
411
- - **スクリプト実行**: `:`キーでコマンドモード起動
412
- - `.rb`ファイルを一覧表示
413
- - 選択したスクリプトを実行
414
- - プロジェクトコンテキストで実行
415
-
416
- #### UI表示
417
-
418
- プロジェクトモードのUIは通常モードと統一されています:
419
-
420
- - **選択マーク**: ✓(チェックマーク)で選択を表示
421
- - **選択済みブックマーク**: 緑背景、黒文字で表示
422
- - **カーソル位置**: 設定ファイルの選択色でハイライト
423
- - **セパレータ**: 左右画面の間に`│`を表示
424
- - **フッター**: 反転表示でキーバインドを表示
425
-
426
- #### 操作色の統一
427
-
428
- - **緑色ダイアログ**: 作成操作(ファイル、ディレクトリ、ブックマーク)
429
- - **青色ダイアログ**: ディレクトリ作成
430
- - **黄色ダイアログ**: リネーム操作
431
- - **赤色ダイアログ**: 削除操作
432
-
433
- ### zoxide連携機能の詳細
434
-
435
- #### zoxide履歴移動 (`z`)
436
-
437
- - **スマート履歴**: zoxideが記録したディレクトリ移動履歴を表示
438
- - **フリークエンシー順**: よく使用するディレクトリほど上位に表示
439
- - **インタラクティブ選択**: フローティングウィンドウで履歴を選択
440
- - **高速ナビゲーション**: 数字キーで直接ディレクトリを選択
441
- - **パス省略表示**: ホームディレクトリを`~`で表示し見やすく
442
-
443
- #### 使用例
157
+ ### 組み込みコマンド
444
158
 
445
159
  ```
446
- 1. z → zoxide履歴メニューを表示
447
- 2. 1-20 → 表示された番号でディレクトリを選択
448
- 3. ESC → キャンセルして元の画面に戻る
449
- ```
450
-
451
- #### zoxideについて
452
-
453
- [zoxide](https://github.com/ajeetdsouza/zoxide)は、ディレクトリ移動履歴を学習するスマートなcdコマンドです。
454
-
455
- ```bash
456
- # zoxideのインストール
457
- # macOS (Homebrew)
458
- brew install zoxide
459
-
460
- # Ubuntu/Debian
461
- apt install zoxide
462
-
463
- # その他のインストール方法は公式ドキュメントを参照
464
- # https://github.com/ajeetdsouza/zoxide#installation
160
+ :hello # 挨拶メッセージ
161
+ :stop # rufioを終了
465
162
  ```
466
163
 
467
- #### 動作要件
468
-
469
- - zoxideがシステムにインストールされている必要があります
470
- - zoxideが無効な場合は適切なメッセージが表示されます
471
- - 履歴が空の場合も適切にハンドリングされます
472
-
473
- ### コマンドモードの詳細
474
-
475
- #### コマンドモードの起動 (`:`)
476
-
477
- - `:`キーを押してコマンドモードを起動
478
- - 画面最下部にコマンド入力欄が表示される
479
- - プラグインが提供するコマンドを実行できる
164
+ ## スクリプトパス
480
165
 
481
- #### Tab補完機能
166
+ ### スクリプトパスとは
482
167
 
483
- - **インテリジェントな補完**: コマンド名の一部を入力して`Tab`キーを押すと自動補完
484
- - **複数候補の処理**: 複数のコマンドが一致する場合は共通プレフィックスまで補完
485
- - **単一候補の自動完成**: 一つだけマッチする場合は完全に補完される
486
- - **リアルタイム更新**: 入力内容に応じて候補が動的に変化
168
+ スクリプトファイルを配置するディレクトリを登録する機能です。登録したディレクトリ内のスクリプトは、コマンドモードで `@` プレフィックスを使って実行できます。
487
169
 
488
- #### フローティングウィンドウでの結果表示
170
+ ### 管理方法
489
171
 
490
- - **視覚的フィードバック**: コマンド実行結果をモダンなフローティングウィンドウで表示
491
- - **色分けされた結果**:
492
- - **緑色のボーダー**: コマンドが正常に実行された場合
493
- - **赤色のボーダー**: エラーまたは警告が発生した場合
494
- - **中央配置**: 画面中央に自動的に配置され視認性が高い
495
- - **自動サイズ調整**: 結果の内容に応じてウィンドウサイズが自動調整
496
- - **簡単に閉じる**: 任意のキーを押すとウィンドウを閉じて通常操作に戻る
172
+ `B` `3` でスクリプトパス管理メニューを開きます:
497
173
 
498
- #### 使用例
174
+ - 登録済みパスの一覧表示
175
+ - `d`: パスを削除
176
+ - `Enter`: ディレクトリにジャンプ
177
+ - `ESC`: メニューを閉じる
499
178
 
500
- ```
501
- 1. : → コマンドモードを起動
502
- 2. "he" → コマンド名の一部を入力
503
- 3. Tab → 補完("hello", "help", "health"などが候補)
504
- 4. Enter → コマンドを実行
505
- 5. フローティングウィンドウで結果を確認
506
- 6. 任意のキーを押してウィンドウを閉じる
507
- ```
508
-
509
- #### 利用可能なコマンド
179
+ ### 対応スクリプト
510
180
 
511
- コマンドはDSLで定義されます。DSLコマンドシステムの詳細については後述の「DSLコマンドシステム」セクションを参照してください。
181
+ | 拡張子 | 言語 |
182
+ |--------|------|
183
+ | `.rb` | Ruby |
184
+ | `.py` | Python |
185
+ | `.ps1` | PowerShell |
186
+ | `.sh` | Shell (bash/zsh) |
512
187
 
513
- ### 必要な外部ツール
188
+ ## DSLコマンド
514
189
 
515
- 検索機能・履歴機能を使用するには、以下のツールが必要です:
190
+ `~/.config/rufio/commands.rb` でカスタムコマンドを定義できます:
516
191
 
517
- ```bash
518
- # macOS (Homebrew)
519
- brew install fzf rga zoxide
192
+ ```ruby
193
+ command "hello" do
194
+ ruby { "Hello from rufio!" }
195
+ description "挨拶コマンド"
196
+ end
520
197
 
521
- # Ubuntu/Debian
522
- apt install fzf zoxide
523
- # rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all
198
+ command "status" do
199
+ shell "git status"
200
+ description "Gitステータス"
201
+ end
524
202
 
525
- # その他のLinuxディストリビューション
526
- # パッケージマネージャーまたは手動インストールが必要
203
+ command "build" do
204
+ script "~/.config/rufio/scripts/build.rb"
205
+ description "ビルド実行"
206
+ end
527
207
  ```
528
208
 
529
- #### 各ツールの用途
530
-
531
- - **fzf**: ファイル名検索機能(`s`キー)
532
- - **rga**: ファイル内容検索機能(`F`キー)
533
- - **zoxide**: ディレクトリ履歴移動機能(`z`キー)
534
-
535
209
  ## 設定
536
210
 
537
- ### 色設定(カスタマイズ)
538
-
539
- rufioではファイルタイプや UI 要素の色をカスタマイズできます。HSLカラーモデルによる直感的な色指定をサポートしています。
540
-
541
- #### サポートされる色形式
542
-
543
- ```ruby
544
- # HSL(色相・彩度・明度)- 推奨形式
545
- {hsl: [220, 80, 60]} # 色相220度、彩度80%、明度60%
546
-
547
- # RGB(赤・緑・青)
548
- {rgb: [100, 150, 200]}
549
-
550
- # HEX(16進数)
551
- {hex: "#6496c8"}
552
-
553
- # 従来のシンボル
554
- :blue, :red, :green, :yellow, :cyan, :magenta, :white, :black
211
+ ### 設定ファイル構成
555
212
 
556
- # ANSIカラーコード
557
- "34" または 34
213
+ ```
214
+ ~/.config/rufio/
215
+ ├── config.rb # カラー設定
216
+ ├── commands.rb # DSLコマンド定義
217
+ ├── bookmarks.json # ブックマーク
218
+ ├── scripts/ # スクリプトファイル
219
+ └── log/ # 実行ログ
558
220
  ```
559
221
 
560
- #### 設定例
222
+ ### カラー設定
561
223
 
562
224
  ```ruby
563
225
  # ~/.config/rufio/config.rb
564
226
  COLORS = {
565
- # HSLでの色指定(直感的で調整しやすい)
566
- directory: {hsl: [220, 80, 60]}, # 青系でディレクトリ
567
- file: {hsl: [0, 0, 90]}, # 薄いグレーで通常ファイル
568
- executable: {hsl: [120, 70, 50]}, # 緑系で実行ファイル
569
- selected: {hsl: [50, 90, 70]}, # 黄色で選択項目
570
- preview: {hsl: [180, 60, 65]}, # シアンでプレビュー
571
-
572
- # 他の形式も併用可能
573
- # directory: :blue, # シンボル
574
- # file: {rgb: [200, 200, 200]}, # RGB
575
- # executable: {hex: "#00aa00"}, # HEX
227
+ directory: {hsl: [220, 80, 60]},
228
+ file: {hsl: [0, 0, 90]},
229
+ executable: {hsl: [120, 70, 50]},
230
+ selected: {hsl: [50, 90, 70]},
231
+ preview: {hsl: [180, 60, 65]},
576
232
  }
577
233
  ```
578
234
 
579
- #### HSLカラーモデルについて
580
-
581
- - **色相(Hue)**: 0-360度(0=赤、120=緑、240=青)
582
- - **彩度(Saturation)**: 0-100%(0=グレー、100=鮮やか)
583
- - **明度(Lightness)**: 0-100%(0=黒、50=標準、100=白)
584
-
585
- #### 設定可能な項目
235
+ ## 外部ツール連携
586
236
 
587
- - `directory`: ディレクトリの色
588
- - `file`: 通常ファイルの色
589
- - `executable`: 実行可能ファイルの色
590
- - `selected`: 選択中の項目の色
591
- - `preview`: プレビューパネルの色
237
+ rufioは以下の外部ツールと連携して機能を拡張します:
592
238
 
593
- ## DSLコマンドシステム
239
+ | ツール | 用途 | キー |
240
+ |--------|------|------|
241
+ | fzf | ファイル名検索 | `s` |
242
+ | rga | ファイル内容検索 | `F` |
243
+ | zoxide | ディレクトリ履歴 | `z` |
594
244
 
595
- rufioはDSLベースのコマンドシステムを備えており、独自のコマンドを簡単に追加できます。
245
+ ### インストール
596
246
 
597
- ### コマンド定義ファイル
598
-
599
- ユーザー定義コマンドは以下のファイルに記述します:
247
+ ```bash
248
+ # macOS
249
+ brew install fzf rga zoxide
600
250
 
601
- ```
602
- ~/.config/rufio/commands.rb
251
+ # Ubuntu/Debian
252
+ apt install fzf zoxide
253
+ # rgaは別途インストール: https://github.com/phiresky/ripgrep-all
603
254
  ```
604
255
 
605
- ### コマンドの作成方法
256
+ ## 高度な機能
606
257
 
607
- #### Rubyコードを実行するコマンド
258
+ ### ネイティブスキャナー(実験的)
608
259
 
609
- ```ruby
610
- # ~/.config/rufio/commands.rb
611
- command "hello" do
612
- ruby { "Hello from rufio!" }
613
- description "挨拶コマンド"
614
- end
615
-
616
- command "time" do
617
- ruby { Time.now.strftime("%Y-%m-%d %H:%M:%S") }
618
- description "現在時刻を表示"
619
- end
620
- ```
621
-
622
- #### シェルコマンドを実行するコマンド
623
-
624
- ```ruby
625
- command "status" do
626
- shell "git status"
627
- description "Gitステータスを表示"
628
- end
260
+ 高速なディレクトリスキャンのためのネイティブ実装をサポート:
629
261
 
630
- command "disk" do
631
- shell "df -h"
632
- description "ディスク使用量を表示"
633
- end
262
+ ```bash
263
+ rufio --native # 自動検出
264
+ rufio --native=zig # Zig実装
634
265
  ```
635
266
 
636
- #### 外部スクリプトを実行するコマンド
267
+ ### JITコンパイラ
637
268
 
638
- ```ruby
639
- command "build" do
640
- script "~/.config/rufio/scripts/build.rb"
641
- description "プロジェクトをビルド"
642
- end
269
+ ```bash
270
+ rufio --yjit # Ruby 3.1+ YJIT
271
+ rufio --zjit # Ruby 3.4+ ZJIT
643
272
  ```
644
273
 
645
- ### コマンドの使い方
646
-
647
- 1. rufioを起動
648
- 2. `:`キーでコマンドモードを起動
649
- 3. コマンド名を入力(または一部を入力してTabキーで補完)
650
- 4. Enterキーで実行
651
- 5. フローティングウィンドウに結果が表示される
652
-
653
- ### 組み込みコマンド
654
-
655
- rufioには以下のコマンドがデフォルトで組み込まれています:
656
-
657
- | コマンド | 説明 |
658
- | -------- | ---- |
659
- | `hello` | 挨拶メッセージを表示 |
660
- | `stop` | rufioを終了 |
661
- | `touch` | ファイルを作成 |
662
- | `mkdir` | ディレクトリを作成 |
663
-
664
- ### DSLコマンドの種類
665
-
666
- 1. **ruby**: Rubyコードをインラインで実行
667
- 2. **shell**: シェルコマンドを実行
668
- 3. **script**: 外部スクリプトファイルを実行
669
-
670
- ### 設定ファイル構成
274
+ ### ヘルスチェック
671
275
 
672
- ```
673
- ~/.config/rufio/
674
- ├── config.rb # カラー設定
675
- ├── commands.rb # DSLコマンド定義
676
- ├── bookmarks.json # ブックマーク
677
- ├── scripts/ # スクリプトファイル
678
- └── log/ # 実行ログ
276
+ ```bash
277
+ rufio -c # システム依存関係をチェック
278
+ rufio --check-health # 同上
679
279
  ```
680
280
 
681
281
  ## 開発
@@ -691,34 +291,20 @@ rufioには以下のコマンドがデフォルトで組み込まれています
691
291
  git clone https://github.com/masisz/rufio
692
292
  cd rufio
693
293
  bundle install
694
- ./exe/rufio
294
+ ./bin/rufio
695
295
  ```
696
296
 
697
- ### テスト実行
297
+ ### テスト
698
298
 
699
299
  ```bash
700
300
  bundle exec rake test
701
301
  ```
702
302
 
703
- ## 対応プラットフォーム
704
-
705
- - **macOS**: ネイティブサポート
706
- - **Linux**: ネイティブサポート
707
- - **Windows**: 基本機能をサポート
708
-
709
303
  ## ライセンス
710
304
 
711
305
  MIT License
712
306
 
713
307
  ## 貢献
714
308
 
715
- バグ報告や機能リクエストは[GitHub Issues](https://github.com/masisz/rufio/issues)でお願いします。
716
-
309
+ バグ報告や機能リクエストは [GitHub Issues](https://github.com/masisz/rufio/issues) でお願いします。
717
310
  プルリクエストも歓迎です!
718
-
719
- ### 開発ガイドライン
720
-
721
- 1. 既存のコードスタイルと規約に従う
722
- 2. 新機能にはテストを追加する
723
- 3. 必要に応じてドキュメントを更新する
724
- 4. 可能であれば複数のプラットフォームでテストする