CLIツール
jarun/nnn avatar
jarun/nnn

nnnは端末操作を組み立て直す小さなファイルマネージャー

n 型破りなターミナル ファイル マネージャー。 Pi、Termux (Android)、Linux、macOS、BSD、Haiku、Cygwin、WSL、複数の DE、または厳密に CLI 環境上で実行されます。

スター 21,882フォーク 818CBSD-2-Clause
GitHub

ひと目でわかる

これは何?
C製のnnnは、少ないメモリとキーボード中心の操作で、検索、選択、プレビュー、外部コマンド連携までを端末内にまとめる。
誰に向いている?
nnnは、端末を主な作業場所にし、ファイルの移動や選択を短いキー操作で組み立てたい人に向く。GUIの一覧や個別の画面を前提にした運用には、そのまま置き換えられない。
商用利用できる?
できます。BSD-2-Clause は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 6 日前です。
何の言語で書かれている?
主に C です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

nnnが選ぶ端末ファイル管理の範囲

READMEは冒頭のタグラインで「n³ The unorthodox terminal file manager」と掲げ、nnnをフル機能のターミナルファイルマネージャーであり、小さく、ほぼ設定不要で、高速だと説明している。また、このプログラムは控えめで、スマートなワークフローによって思考の流れに沿うように設計されていると書かれている。リポジトリはC言語で書かれ、READMEにはPOSIX準拠、Linuxカーネルコーディングスタイルに従うこと、静的解析を統合したコードといった品質目標が列挙されている。READMEは「unorthodox」という語をこれ以上定義しておらず、それは技術的な主張ではなくラベルにすぎない。

nnnの操作は、矢印キー、スラッシュ、qを入口にし、Tabでコンテキストを作成または切り替え、?で一覧を開く構成である。設定ファイルを大きく育てる設計ではなく、シェル関数と環境変数、必要なプラグインを組み合わせる。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、nnnが選ぶ端末ファイル管理の範囲を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。nnnが選ぶ端末ファイル管理の範囲に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

小さなバイナリを支える対応環境

READMEによると、nnnはRaspberry Pi、Termux(Android)、Linux、macOS、BSD、Haiku、Cygwin、WSL上で動作し、デスクトップ環境でも純粋なCLI環境でも使える。また、静的バイナリが利用可能で、ライブラリ依存が最小限であり、プロジェクトは「多くのパッケージャで広く利用可能」とされているが、具体的なパッケージマネージャ名は挙げていない。リポジトリメタデータは21,758スターと814フォークを示すが、READMEはユーザー数や採用状況については述べていない。ライセンスはBSD 2-Clauseで、条件付きで再配布と改変を許可するが、保証やサポートの約束は含まれない。

nnnの軽量さはREADMEにある典型値として読むべきで、端末の描画、ネットワークマウント、プレビュー用外部コマンドが加わった時の負荷は別に測る。削除、移動、ゴミ箱連携をテスト用パスで確認すれば、キー操作の速さと安全な運用を分けて判断できる。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、小さなバイナリを支える対応環境を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。小さなバイナリを支える対応環境に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

検索とコンテキストで移動を短くする

機能リストには、一意な一致で自動的にディレクトリに入るフィルタ、type-to-navモード、見える相対オフセットでエントリにジャンプする機能、カスタムカラーのコンテキスト(タブまたはワークスペースとも呼ばれる)、セッション、ブックマーク、sshfsまたはrcloneを使ったリモートマウントなど、複数のナビゲーション支援が含まれる。検索オプションは「search-as-you-type」で、ファジー、正規表現(POSIXまたはPCRE2)、文字列(デフォルト)フィルタがある。ソートはデフォルトで順序付きの純粋な数値名に従い、大文字小文字を区別しないバージョンソートがあり、名前、アクセス/変更/修正時刻、サイズ、拡張子でソートでき、逆順ソートとディレクトリ固有の順序付けもサポートする。READMEはこれらの操作のベンチマーク数値を示しておらず、パフォーマンスのwikiページを参照している。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、検索とコンテキストで移動を短くするを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。検索とコンテキストで移動を短くするに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

選択からプレビューとアーカイブへ

nnnはディスク使用量の分析、一括リネーム、アプリ起動、ファイル選択ができる。MIME処理には、ディレクトリとテキストファイル用の組み込みプレビューア、FIFOベースのプレビュープラグイン、デスクトップオープナーまたはカスタムオープナー、ファイル固有の色、アイコンと絵文字のサポート、画像・動画・音声のサムネイルプラグイン、アーカイブの作成・一覧表示・展開(先指定)・マウント(FUSEベース)が含まれる。便利な機能として、ディレクトリ横断の選択、作成・リネーム・複製、一括リネーマー、クリップボードへのコピーと移動、ゴミ箱ツール統合、コピー・移動・削除完了後の通知、設定可能なアイドルタイムアウトによる端末ロックがある。READMEはスクリーンリーダーと点字ディスプレイの基本的なサポートにも言及しているが、実装の詳細には踏み込んでいない。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、選択からプレビューとアーカイブへを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。選択からプレビューとアーカイブへに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

プラグインを境界にした拡張

プラグインリポジトリはnnnをそのうえ拡張する手段として紹介されており、例としてライブプレビュー、ディスクのマウント/アンマウント、検索と一覧表示、ファイル/ディレクトリ差分、ファイルアップロードが挙げられている。パッチフレームワークはユーザー提出のパッチをホストしており、READMEはそれらを「主観的な性質」と述べている。また、独立した (neo)vim プラグインとして、nnn.vim、vim-floatermのnnnラッパー、nnn.nvimも列挙されている。READMEはプラグインの数やメンテナの関与を明記しておらず、プラグインディレクトリとwikiを参照するよう案内している。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、プラグインを境界にした拡張を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。プラグインを境界にした拡張に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

クイックスタートで確認する設定

クイックスタートの節では、nnnと必要な依存関係をインストールし、終了時にcdする設定、サブシェルのPWD同期、プラグインのインストール、選択をクリップボードに同期して通知を表示する-xオプション、CLIのみの環境ではNNN_OPENERをnukeに設定し-cオプションを使うことを勧めている。また、`alias ls='nnn -de'`というエイリアスも提案している。READMEはショートカットを暗記しないように強調しており、矢印キー、/、qだけで十分で、Tabはコンテキストの作成または循環、?はショートカット一覧を表示する。設定ファイルは不要で、READMEは最小限の設定と賢明なデフォルトを謳っている。使用法、ライブプレビュー、トラブルシューティングについてはwikiページを参照している。

nnnは端末操作を組み立て直す小さなファイルマネージャーでは、クイックスタートで確認する設定を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。クイックスタートで確認する設定に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

編集部の結論

nnnは、端末を主な作業場所にし、ファイルの移動や選択を短いキー操作で組み立てたい人に向く。GUIの一覧や個別の画面を前提にした運用には、そのまま置き換えられない。導入前に対象シェルで終了時のcd連携、NNN_OPENER、sshfsまたはrcloneを使う接続、プラグインの依存コマンドを確認し、削除や移動をテスト用ディレクトリで実行して挙動を確かめたい。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート