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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +52 -0
- data/README.md +180 -594
- data/examples/config.yml +8 -0
- data/lib/rufio/bookmark.rb +6 -30
- data/lib/rufio/bookmark_manager.rb +15 -1
- data/lib/rufio/bookmark_storage.rb +148 -0
- data/lib/rufio/command_completion.rb +20 -5
- data/lib/rufio/command_mode.rb +102 -9
- data/lib/rufio/command_mode_ui.rb +8 -8
- data/lib/rufio/config.rb +54 -54
- data/lib/rufio/config_loader.rb +53 -0
- data/lib/rufio/job_manager.rb +128 -0
- data/lib/rufio/job_mode.rb +146 -0
- data/lib/rufio/keybind_handler.rb +243 -232
- data/lib/rufio/notification_manager.rb +77 -0
- data/lib/rufio/script_config_loader.rb +101 -0
- data/lib/rufio/script_path_manager.rb +386 -0
- data/lib/rufio/script_runner.rb +216 -0
- data/lib/rufio/task_status.rb +118 -0
- data/lib/rufio/terminal_ui.rb +183 -497
- data/lib/rufio/version.rb +1 -1
- data/lib/rufio.rb +9 -4
- data/scripts/test_jobs/build_simulation.sh +29 -0
- data/scripts/test_jobs/deploy_simulation.sh +37 -0
- data/scripts/test_jobs/quick.sh +11 -0
- data/scripts/test_jobs/random_result.sh +23 -0
- data/scripts/test_jobs/slow_fail.sh +10 -0
- data/scripts/test_jobs/slow_success.sh +10 -0
- data/scripts/test_jobs/very_slow.sh +19 -0
- metadata +21 -10
- data/docs/file-preview-optimization-analysis.md +0 -759
- data/docs/file-preview-performance-issue-FIXED.md +0 -547
- data/lib/rufio/project_command.rb +0 -147
- data/lib/rufio/project_log.rb +0 -68
- data/lib/rufio/project_mode.rb +0 -58
data/README.md
CHANGED
|
@@ -1,53 +1,57 @@
|
|
|
1
1
|
# rufio
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Runtime Unified Flow I/O Operator**
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
12
|
+
## コンセプト
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
rufioは単なるファイルマネージャーではありません。**ツールランタイム実行環境**です。
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
27
|
+
- **ファイル操作**: 従来のファイルマネージャー機能
|
|
28
|
+
- **スクリプト実行**: Ruby/Python/PowerShellスクリプトをファイルコンテキストで実行
|
|
29
|
+
- **ツール連携**: 外部ツール(git, fzf, rga等)とのシームレスな統合
|
|
30
|
+
- **統一I/O**: すべての入出力を単一のフローで管理
|
|
18
31
|
|
|
19
32
|
## 特徴
|
|
20
33
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
79
|
+
1. スクリプトを配置したいディレクトリに移動
|
|
80
|
+
2. `B` → `2` でスクリプトパスに追加
|
|
76
81
|
|
|
77
|
-
|
|
82
|
+
### 3. スクリプトを実行
|
|
78
83
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
88
|
-
rufio --native=zig
|
|
89
|
+
## キーバインド
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
rufio --native=rust
|
|
92
|
-
rufio --native rust /path/to/dir
|
|
91
|
+
### 基本操作
|
|
93
92
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
|
|
107
|
-
- **Magnus (Rust)**: 最速、メモリ安全、FFI不要(バイナリ: 314 KB)
|
|
108
|
-
- **Rust (FFI)**: 高速、メモリ安全、JSON経由
|
|
109
|
-
- **Go (FFI)**: 高速、並行処理に優れる
|
|
110
|
-
- **Ruby実装** (デフォルト): 依存なし、安定動作保証
|
|
112
|
+
### 検索・フィルター
|
|
111
113
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
:!pwd # 現在のディレクトリを表示
|
|
146
|
+
:@build # @で始まるとスクリプト補完
|
|
147
|
+
:@deploy.rb # 登録済みスクリプトを実行
|
|
244
148
|
```
|
|
245
149
|
|
|
246
|
-
|
|
247
|
-
- `:!command` でシェルコマンドを非同期実行
|
|
248
|
-
- 実行中もrufioの操作が可能
|
|
249
|
-
- 完了時に通知メッセージを3秒間表示
|
|
250
|
-
- 実行結果は自動的に `~/.config/rufio/log/` に保存
|
|
150
|
+
### シェルコマンド
|
|
251
151
|
|
|
252
|
-
**DSLコマンド** (v0.50.0):
|
|
253
152
|
```
|
|
254
|
-
|
|
255
|
-
|
|
153
|
+
:!git status # !で始まるとシェルコマンド
|
|
154
|
+
:!ls -la # バックグラウンドで実行
|
|
256
155
|
```
|
|
257
156
|
|
|
258
|
-
|
|
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
|
-
|
|
447
|
-
|
|
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
|
-
|
|
166
|
+
### スクリプトパスとは
|
|
482
167
|
|
|
483
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
518
|
-
|
|
519
|
-
|
|
192
|
+
```ruby
|
|
193
|
+
command "hello" do
|
|
194
|
+
ruby { "Hello from rufio!" }
|
|
195
|
+
description "挨拶コマンド"
|
|
196
|
+
end
|
|
520
197
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
198
|
+
command "status" do
|
|
199
|
+
shell "git status"
|
|
200
|
+
description "Gitステータス"
|
|
201
|
+
end
|
|
524
202
|
|
|
525
|
-
|
|
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
|
-
|
|
557
|
-
|
|
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
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
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
|
-
|
|
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
|
-
|
|
588
|
-
- `file`: 通常ファイルの色
|
|
589
|
-
- `executable`: 実行可能ファイルの色
|
|
590
|
-
- `selected`: 選択中の項目の色
|
|
591
|
-
- `preview`: プレビューパネルの色
|
|
237
|
+
rufioは以下の外部ツールと連携して機能を拡張します:
|
|
592
238
|
|
|
593
|
-
|
|
239
|
+
| ツール | 用途 | キー |
|
|
240
|
+
|--------|------|------|
|
|
241
|
+
| fzf | ファイル名検索 | `s` |
|
|
242
|
+
| rga | ファイル内容検索 | `F` |
|
|
243
|
+
| zoxide | ディレクトリ履歴 | `z` |
|
|
594
244
|
|
|
595
|
-
|
|
245
|
+
### インストール
|
|
596
246
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
247
|
+
```bash
|
|
248
|
+
# macOS
|
|
249
|
+
brew install fzf rga zoxide
|
|
600
250
|
|
|
601
|
-
|
|
602
|
-
|
|
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
|
-
|
|
258
|
+
### ネイティブスキャナー(実験的)
|
|
608
259
|
|
|
609
|
-
|
|
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
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
end
|
|
262
|
+
```bash
|
|
263
|
+
rufio --native # 自動検出
|
|
264
|
+
rufio --native=zig # Zig実装
|
|
634
265
|
```
|
|
635
266
|
|
|
636
|
-
|
|
267
|
+
### JITコンパイラ
|
|
637
268
|
|
|
638
|
-
```
|
|
639
|
-
|
|
640
|
-
|
|
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
|
-
|
|
674
|
-
|
|
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
|
-
./
|
|
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. 可能であれば複数のプラットフォームでテストする
|