beniya
Ruby製のターミナルベースファイルマネージャー
日本語 | English
概要
beniyaは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、プラグインサポートを備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。
特徴
- 軽量でシンプル: Rubyで書かれた軽量なファイルマネージャー
- 直感的な操作: Vimライクなキーバインド
- ファイルプレビュー: テキストファイルの内容をその場で確認
- リアルタイムフィルター: Spaceキーでファイル名の絞り込み表示
- 高度な検索機能: 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 |
ディレクトリ内容を更新 |
リアルタイムフィルター機能
キー | 機能 |
---|---|
Space |
フィルターモード開始・再編集 |
文字入力 | ファイル名で絞り込み(フィルターモード中) |
Enter |
フィルター維持で通常モードに戻る |
ESC |
フィルターをクリアして通常モードに戻る |
Backspace |
文字削除(フィルターモード中) |
検索機能
キー | 機能 |
---|---|
/ |
fzfによるファイル名検索(プレビュー付き) |
f |
rgaによるファイル内容検索 |
システム操作
キー | 機能 |
---|---|
q |
beniyaを終了 |
フィルター機能の詳細
リアルタイムフィルター (Space
)
-
フィルター開始:
Space
キーを押してフィルターモードに入る - 文字入力による絞り込み: 日本語・英数字・記号に対応
- リアルタイム更新: 文字を入力するたびに表示が更新される
-
フィルター維持:
Enter
キーでフィルターを保持したまま通常操作に戻る -
フィルタークリア:
ESC
キーでフィルターをクリアして通常表示に戻る -
再編集: フィルター適用中に
Space
キーで再編集モード -
文字削除:
Backspace
で文字削除、全削除時は自動でフィルタークリア
使用例
1. Space → フィルターモード開始
2. ".rb" → Rubyファイルのみ表示
3. Enter → フィルター維持で通常操作
4. j/k → フィルター結果内をナビゲーション
5. Space → フィルター再編集
6. ESC → フィルタークリア
検索機能の詳細
ファイル名検索 (/
)
-
fzf
を使用したインタラクティブなファイル名検索 - リアルタイムプレビュー表示
- 選択したファイルは自動で外部エディタで開かれる
ファイル内容検索 (f
)
-
rga
(ripgrep-all)を使用した高度なファイル内容検索 - PDF、Word文書、画像内テキストなども検索対象
- 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く
必要な外部ツール
検索機能を使用するには、以下のツールが必要です:
# macOS (Homebrew)
brew install fzf rga
# Ubuntu/Debian
apt install fzf
# rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all
# その他のLinuxディストリビューション
# パッケージマネージャーまたは手動インストールが必要
設定
言語設定
beniyaは多言語対応しています。言語は以下の方法で設定できます:
環境変数(推奨)
# 日本語
export BENIYA_LANG=ja
# 英語(デフォルト)
export BENIYA_LANG=en
設定ファイル
# 設定ディレクトリを作成
mkdir -p ~/.config/beniya
# 設定例をコピー
cp config_example.rb ~/.config/beniya/config.rb
# 設定ファイルを編集
# 日本語の場合は LANGUAGE = 'ja'、英語の場合は LANGUAGE = 'en' を設定
優先順位
- 設定ファイル(
~/.config/beniya/config.rb
) -
BENIYA_LANG
環境変数 - デフォルト(英語)
色設定(カスタマイズ)
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でお願いします。
プルリクエストも歓迎です!
開発ガイドライン
- 既存のコードスタイルと規約に従う
- 新機能にはテストを追加する
- 必要に応じてドキュメントを更新する
- 可能であれば複数のプラットフォームでテストする