beniya
Ruby製のターミナルベースファイルマネージャー
日本語 | English
概要
beniyaは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、プラグインサポートを備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。
特徴
- 軽量でシンプル: Rubyで書かれた軽量なファイルマネージャー
- 直感的な操作: Vimライクなキーバインド
- ファイルプレビュー: テキストファイルの内容をその場で確認
- ファイル選択・操作: 複数ファイルの選択、移動、コピー、削除が可能
- ベースディレクトリ操作: 起動ディレクトリへの一括ファイル移動・コピー
- リアルタイムフィルター: sキーでファイル名の絞り込み表示
- 高度な検索機能: fzfとrgaを使った強力な検索
- マルチプラットフォーム: macOS、Linux、Windowsで動作
- 外部エディタ連携: お気に入りのエディタでファイルを開く
- ヘルスチェック: システム依存関係の確認機能
インストール
gem install beniya
または、Gemfileに追加してください:
gem 'beniya'
使い方
基本的な起動方法
beniya # カレントディレクトリで起動
beniya /path/to # 指定したディレクトリで起動
ヘルスチェック
beniya -c # システム依存関係をチェック
beniya --check-health # 上記と同じ
beniya --help # ヘルプメッセージを表示
キーバインド一覧
基本ナビゲーション
キー | 機能 |
---|---|
j |
下に移動 |
k |
上に移動 |
h |
親ディレクトリに移動 |
l / Enter
|
ディレクトリに入る・ファイルを選択 |
高速ナビゲーション
キー | 機能 |
---|---|
g |
リストの先頭に移動 |
G |
リストの末尾に移動 |
ファイル操作
キー | 機能 |
---|---|
o |
選択中のファイルを外部エディタで開く |
e |
現在のディレクトリをファイルエクスプローラーで開く |
r |
ディレクトリ内容を更新 |
a |
新しいファイルを作成 |
A |
新しいディレクトリを作成 |
ファイル選択・操作
キー | 機能 |
---|---|
Space |
ファイル・ディレクトリを選択・選択解除(複数選択可) |
m |
選択したアイテムをベースディレクトリに移動 |
p |
選択したアイテムをベースディレクトリにコピー |
x |
選択したアイテムを削除 |
リアルタイムフィルター機能
キー | 機能 |
---|---|
f |
フィルターモード開始・再編集 |
文字入力 | ファイル名で絞り込み(フィルターモード中) |
Enter |
フィルター維持で通常モードに戻る |
ESC |
フィルターをクリアして通常モードに戻る |
Backspace |
文字削除(フィルターモード中) |
検索機能
キー | 機能 |
---|---|
s |
fzfによるファイル名検索(プレビュー付き) |
F |
rgaによるファイル内容検索 |
ブックマーク機能
キー | 機能 |
---|---|
b |
ブックマークメニューを表示 |
1 -9
|
対応する番号のブックマークに移動 |
zoxide連携機能
キー | 機能 |
---|---|
z |
zoxide履歴からディレクトリを選択移動 |
システム操作
キー | 機能 |
---|---|
q |
beniyaを終了 |
ファイル選択・操作機能の詳細
ファイル・ディレクトリ選択 (Space
)
-
選択・選択解除:
Space
キーでファイルやディレクトリを選択・選択解除 - 複数選択: 複数のファイルやディレクトリを同時に選択可能
- 視覚的表示: 選択されたアイテムは✓マークと緑色の背景で表示
- 選択状態の表示: 画面上部2行目に選択中のアイテム数が表示
ベースディレクトリ操作
beniya起動時のディレクトリがベースディレクトリとして設定され、選択したファイルの移動・コピー先となります。
操作 | キー | 機能 |
---|---|---|
移動 | m |
選択したアイテムをベースディレクトリに移動 |
コピー | p |
選択したアイテムをベースディレクトリにコピー |
削除 | x |
選択したアイテムを削除 |
削除操作の詳細
- フローティングダイアログ確認: モダンなフローティングウィンドウで明確な選択肢を表示
- 視覚的フィードバック: 赤い枠線と警告色で注意を引く
- 安全な操作: 削除前のダブルチェック
- 包括的エラーハンドリング: 削除失敗時の詳細なエラーメッセージ
- リアルタイム結果表示: フローティングダイアログで成功/失敗数を表示
- ファイルシステム検証: 成功報告前に実際の削除を確認
- デバッグサポート: BENIYA_DEBUG=1でオプションのデバッグログ出力
操作の流れ
1. Space → ファイル・ディレクトリを選択(複数選択可)
2. 操作キーを選択:
- m → ベースディレクトリに移動
- p → ベースディレクトリにコピー
- x → 削除
3. フローティングダイアログ → Y/Nで確認、ESCでキャンセル
4. 結果表示 → フローティングウィンドウで操作結果を確認
安全機能
- フローティング確認ダイアログ: 確認用のモダンなフローティングウィンドウインターフェース
- 視覚警告システム: 危険な操作時の赤い枠線と警告色
- 重複チェック: 同名ファイルがある場合は自動でスキップ
- エラーハンドリング: 権限不足などのエラーに適切に対応
- 操作ログ: フローティングダイアログで処理結果を詳細表示
- 削除後検証: ファイルシステムから実際に削除されたことを確認
フィルター機能の詳細
リアルタイムフィルター (f
)
-
フィルター開始:
f
キーを押してフィルターモードに入る - 文字入力による絞り込み: 日本語・英数字・記号に対応
- リアルタイム更新: 文字を入力するたびに表示が更新される
-
フィルター維持:
Enter
キーでフィルターを保持したまま通常操作に戻る -
フィルタークリア:
ESC
キーでフィルターをクリアして通常表示に戻る -
再編集: フィルター適用中に
f
キーで再編集モード -
文字削除:
Backspace
で文字削除、全削除時は自動でフィルタークリア
使用例
1. f → フィルターモード開始
2. ".rb" → Rubyファイルのみ表示
3. Enter → フィルター維持で通常操作
4. j/k → フィルター結果内をナビゲーション
5. f → フィルター再編集
6. ESC → フィルタークリア
検索機能の詳細
ファイル名検索 (s
)
-
fzf
を使用したインタラクティブなファイル名検索 - リアルタイムプレビュー表示
- 選択したファイルは自動で外部エディタで開かれる
ファイル内容検索 (F
)
-
rga
(ripgrep-all)を使用した高度なファイル内容検索 - PDF、Word文書、画像内テキストなども検索対象
- 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く
ブックマーク機能の詳細
ブックマーク操作 (b
)
-
ブックマーク追加:
[A]
- 現在のディレクトリをブックマークに追加 -
ブックマーク一覧:
[L]
- 登録済みブックマークの一覧表示 -
ブックマーク削除:
[R]
- ブックマークを削除 -
番号ジャンプ:
1-9
- 対応する番号のブックマークに直接移動
高速ナビゲーション (1
-9
)
- ブックマークメニューを経由せず、数字キーでブックマークに直接ジャンプ
- 最大9個のブックマークをサポート
- ブックマーク情報は画面上部に表示
ブックマークの永続化
- ブックマーク情報は
~/.config/beniya/bookmarks.json
に自動保存 - beniya再起動後もブックマーク情報が保持される
- JSONファイルを直接編集することも可能
zoxide連携機能の詳細
zoxide履歴移動 (z
)
- スマート履歴: zoxideが記録したディレクトリ移動履歴を表示
- フリークエンシー順: よく使用するディレクトリほど上位に表示
- インタラクティブ選択: フローティングウィンドウで履歴を選択
- 高速ナビゲーション: 数字キーで直接ディレクトリを選択
-
パス省略表示: ホームディレクトリを
~
で表示し見やすく
使用例
1. z → zoxide履歴メニューを表示
2. 1-20 → 表示された番号でディレクトリを選択
3. ESC → キャンセルして元の画面に戻る
zoxideについて
zoxideは、ディレクトリ移動履歴を学習するスマートなcdコマンドです。
# zoxideのインストール
# macOS (Homebrew)
brew install zoxide
# Ubuntu/Debian
apt install zoxide
# その他のインストール方法は公式ドキュメントを参照
# https://github.com/ajeetdsouza/zoxide#installation
動作要件
- zoxideがシステムにインストールされている必要があります
- zoxideが無効な場合は適切なメッセージが表示されます
- 履歴が空の場合も適切にハンドリングされます
必要な外部ツール
検索機能・履歴機能を使用するには、以下のツールが必要です:
# macOS (Homebrew)
brew install fzf rga zoxide
# Ubuntu/Debian
apt install fzf zoxide
# rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all
# その他のLinuxディストリビューション
# パッケージマネージャーまたは手動インストールが必要
各ツールの用途
-
fzf: ファイル名検索機能(
s
キー) -
rga: ファイル内容検索機能(
F
キー) -
zoxide: ディレクトリ履歴移動機能(
z
キー)
設定
色設定(カスタマイズ)
beniyaではファイルタイプや UI 要素の色をカスタマイズできます。HSLカラーモデルによる直感的な色指定をサポートしています。
サポートされる色形式
# HSL(色相・彩度・明度)- 推奨形式
{hsl: [220, 80, 60]} # 色相220度、彩度80%、明度60%
# RGB(赤・緑・青)
{rgb: [100, 150, 200]}
# HEX(16進数)
{hex: "#6496c8"}
# 従来のシンボル
:blue, :red, :green, :yellow, :cyan, :magenta, :white, :black
# ANSIカラーコード
"34" または 34
設定例
# ~/.config/beniya/config.rb
COLORS = {
# HSLでの色指定(直感的で調整しやすい)
directory: {hsl: [220, 80, 60]}, # 青系でディレクトリ
file: {hsl: [0, 0, 90]}, # 薄いグレーで通常ファイル
executable: {hsl: [120, 70, 50]}, # 緑系で実行ファイル
selected: {hsl: [50, 90, 70]}, # 黄色で選択項目
preview: {hsl: [180, 60, 65]}, # シアンでプレビュー
# 他の形式も併用可能
# directory: :blue, # シンボル
# file: {rgb: [200, 200, 200]}, # RGB
# executable: {hex: "#00aa00"}, # HEX
}
HSLカラーモデルについて
- 色相(Hue): 0-360度(0=赤、120=緑、240=青)
- 彩度(Saturation): 0-100%(0=グレー、100=鮮やか)
- 明度(Lightness): 0-100%(0=黒、50=標準、100=白)
設定可能な項目
-
directory
: ディレクトリの色 -
file
: 通常ファイルの色 -
executable
: 実行可能ファイルの色 -
selected
: 選択中の項目の色 -
preview
: プレビューパネルの色
開発
必要な環境
- Ruby 2.7.0以上
- io-console, pastel, tty-cursor, tty-screen gems
開発版の実行
git clone https://github.com/masisz/beniya
cd beniya
bundle install
./exe/beniya
テスト実行
bundle exec rake test
対応プラットフォーム
- macOS: ネイティブサポート
- Linux: ネイティブサポート
- Windows: 基本機能をサポート
ライセンス
MIT License
貢献
バグ報告や機能リクエストはGitHub Issuesでお願いします。
プルリクエストも歓迎です!
開発ガイドライン
- 既存のコードスタイルと規約に従う
- 新機能にはテストを追加する
- 必要に応じてドキュメントを更新する
- 可能であれば複数のプラットフォームでテストする