2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ターミナルで軽快に使えるファイラー「fv」を作りました

2
Posted at

ファイルを探して、コピーして、中身を確認する——地味ですが一日に何度もやる作業です。できればマウスやGUIを使わず、ターミナルの中だけで手早く終わらせたい。そんな思いから生まれたのが fv です。

fv is a fast, keyboard-driven TUI file manager that lives in your terminal.

ひとことで言うと、Rust で書いたターミナル用のファイルマネージャです。ファイル操作も、プレビューも、検索も、GUIなしの一画面で完結します。この記事では「fvで何ができるのか」をひととおり紹介していきます。


fv とは

キーボード操作を中心に据えた TUI(Text User Interface)ファイラーです。rangernnnvifmmc といったツールに親しんでいる方なら、すぐに馴染めると思います。その使い心地はそのままに、Rust ならではの軽さと、ごちゃつかない見やすい一画面を両立させることを目指しました。

内部的には Component Architecture というパターンで構成していて、ファイル一覧・入力欄・ブックマーク・Grep といった各エリアが、それぞれ独立した「部品」として動いています。おかげで画面はすっきりと保たれ、機能の追加もしやすくなっています。

そして、ここがおすすめのポイントです。

  • どこでも同じ操作感 — GUIは不要です。手元やSSH先、ターミナルさえあれば操作感は変わりません。リモート作業が多い方ほど効いてきます
  • とにかく軽い — Rust製なので起動も、操作も軽快です。ファイルが大量に入ったディレクトリでももたつきません
  • シンプルなのに多機能 — 一画面にファイル操作・プレビュー・grep・ブックマークを凝縮しています。迷ったら ? でヘルプを開けば、その時点で使えるキーがすべて確認できます

まずは入れてみましょう

説明よりも先に触ってみたい、という方へ。インストールはすぐに終わります。

Homebrew(macOS Apple Silicon / Linux x86_64)

macOSビルドは署名・公証済みです。Homebrew 6.0.0以降はサードパーティtapを明示的に信頼する必要があるため、brew trust を一度挟みます。

brew tap pkshimizu/tap
brew trust --formula pkshimizu/tap/fv
brew install fv

GitHub Releases

Homebrewを使わない場合は、リリースページからアーカイブをダウンロードして展開し、fvPATH に置くだけです。

# macOS (Apple Silicon)
tar xzf fv-aarch64-apple-darwin.tar.gz
# Linux (x86_64)
tar xzf fv-x86_64-unknown-linux-gnu.tar.gz

mv fv /usr/local/bin/

インストールできたら、あとは fv と打つだけです。さっそく中身を見ていきましょう。


何ができるのか

ファイル操作 — 大きなコピーでも固まらない

コピー(c)、移動(m)、削除(d)、リネーム(r)、ディレクトリ作成(k)、ファイル作成(n)、Zip圧縮(p)・解凍(u)と、ファイラーに欲しい操作はひととおり揃っています。カーソル上のファイルを指すシンボリックリンクl)も手早く作れます。

特にうれしいのが、コピー・移動・削除・Zipといった時間のかかる処理を裏側(非同期ジョブ)で実行してくれることです。大量のファイルを相手にしてもUIが固まらず、進捗もきちんと表示されますし、途中でやめたくなったら Esc でキャンセルできます。

Space でチェックを付けて一括処理したり、Shift+A で全選択/解除したりと、まとめて扱う操作も快適です。

コピー&ペースト & クリップボード連携

エディタのような感覚で Ctrl+C(コピー)/ Ctrl+X(カット)/ Ctrl+V(貼り付け)が使えます。さらに y(Yank)で、選んだファイルのパスをシステムのクリップボードへコピーできます。ターミナルの外のアプリへ貼り付けたいときに重宝します。

プレビュー — わざわざ開かなくてよい

v でサイドパネルに中身を表示できます。対応しているのは次のとおりです。

  • テキスト
  • Markdown(レンダリングして表示)
  • 画像
  • 音声(再生・シークにも対応)

開いたまま n / p で前後のファイルへ切り替えられるので、ディレクトリの中身を流し見するのに便利です。画像は端末の対応プロトコル(halfblocks / sixel / kitty / iTerm2)を自動で判別します。

探し方は3種類、用途で使い分け

「探す」操作にもいろいろな場面があるため、用途別に用意しました。

  • インクリメンタル検索(f — 一覧はそのまま、カーソルだけがヒットへ移動します
  • フィルタ(/ — 一致しないファイルを隠して絞り込みます。絞った集合だけを操作対象にできるのが強みです
  • Grep(g — ディレクトリを横断して中身を検索し、ヒットへジャンプします

「カーソルだけ動かしたい」なら検索、「絞り込んでまとめて処理したい」ならフィルタ、と使い分けられます。このほか j でパスへ一気にジャンプ、t でツリー表示して全体を俯瞰する、といったこともできます。

情報チェックとブックマーク

i でサイズや種別、a でパーミッションやタイムスタンプをサイドパネルで素早く確認できます。よく行く場所は + でブックマークしておけば、b で一覧を開いてジャンプ。深い階層を毎回たどる手間から解放されます(不要になったら - で削除します)。

コンテキスト(タブ) — 2ペイン的な使い方も

複数の作業ディレクトリをコンテキストとして持つことができ、Tab / Shift+Tab で切り替えられます。w で現在の場所を複製して新規作成、Shift+W で閉じる、という具合です。

しかもペーストバッファはコンテキスト間で共有されるので、片方でコピーし、もう片方へ移動して貼り付ける、という2ペインファイラー的なファイル移動が自然に行えます。

シェルにもすぐ戻れる

h で現在のディレクトリのままシェルを起動できます。x で任意のコマンドを実行したり、e でOSのファイルマネージャ(Finderなど)に現在の場所を開いたりすることも可能です。ターミナル作業の流れを断ち切らず、必要なときだけ外のツールへ手を伸ばせます。


キーバインド早見表

すべての操作はキー1つで届きます。よく使うものをまとめておきます(? でいつでもヘルプを表示できます)。

ナビゲーション

キー 操作
/ カーソル移動
Enter 開く・ディレクトリへ入る
Backspace 親ディレクトリへ
< / > 履歴を戻る/進む
~ ホームへ
j パスへジャンプ

選択・表示

キー 操作
Space チェックの切り替え(複数選択)
Shift+A 全選択/クリア
. 隠しファイルの表示切り替え
s 並び替え

ファイル操作

キー 操作
c / m / d コピー/移動/削除
r リネーム
k / n ディレクトリ作成/ファイル作成
l シンボリックリンク作成
p / u Zip圧縮/解凍
x コマンド実行
y パスをクリップボードへ(Yank)
Ctrl+C / Ctrl+X / Ctrl+V バッファへコピー/カット/貼り付け

検索・プレビュー

キー 操作
f インクリメンタル検索
/ 一覧を絞り込み(非一致を隠す)
g Grep(ヒットへジャンプ)
v プレビュー(テキスト/画像/音声)
t ツリー表示
a / i 属性/ファイル情報

パネル・コンテキスト・アプリ

キー 操作
b / + / - ブックマーク表示/追加/削除
Tab / Shift+Tab 次/前のコンテキストへ
w / Shift+W 新規コンテキスト/閉じる
h / e シェル起動/ファイルマネージャで開く
o / ? / q 設定/ヘルプ/終了

ハマったときの小ネタ

ttyd / xterm.js系の一部の端末は、実際には描画できない画像プロトコルを「対応している」と申告してくることがあり、画像プレビューが真っ白になる場合があります。そんなときは、どの環境でも描画できるhalfblocksを強制してみてください。

FV_IMAGE_PROTOCOL=halfblocks fv

FV_IMAGE_PROTOCOL には halfblocks / sixel / kitty / iterm2 を指定できます(未設定や認識できない値のときは自動検出に戻ります)。


おわりに

fv は、ターミナルの中だけでファイル管理を完結させたい方のための、速くて軽いキーボード操作中心のファイラーです。

  • GUIなしで、ローカルでもSSH先でも同じ操作感
  • Rust製で軽快、大きなディレクトリでも快適
  • 非同期ジョブ・プレビュー・grep・ブックマーク・タブと、一画面に機能を凝縮

ターミナル作業が多い方は、ぜひ一度試してみてください。

brew tap pkshimizu/tap
brew trust --formula pkshimizu/tap/fv
brew install fv

ライセンスはMITです。ご感想やバグ報告、PRなど、GitHubリポジトリまでお気軽にどうぞ。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?