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