[[📒Articles]] > [[📒2026 Articles]] ![[2026-06-14.webp|cover-picture]] ファイルツリーに対応した[[oil.nvim]]のような[[Neovimプラグイン]]を開発しましたので紹介します。 ## はじめに プラグインの開発に至った経緯をお話しします。 > [!hint] 『御託はいいからモノを見せなされ』という方へ > [[#🦉etoile.nvim]] をお進みください。 ### [[oil.nvim]]との出会い 私は[[oil.nvim]]の大ファンです。[[Neovim]]の[[バッファ (Vim)|バッファ]]システムを最大限に活用したあのUIは、素晴らしいの一言に尽きます。[[Minerva]]ではじめに紹介したのは、2年ちょっと前に執筆した以下の記事だと思います。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📘あまり紹介されていないけど かけがえのないNeovimプラグインたち </div> <div class="link-card-v2-content">日本語サイトでほとんど紹介されていないNeovimプラグインを厳選し、flash.nvimやoil.nvimなど5つを詳しく解説しています。ファイルエクスプローラーやLSP連携、ウィンドウ配置、効率的なファイル検索など、Neovimを快適に使うためのおすすめプラグインを知りたい方はぜひご覧ください。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/%F0%9F%93%98Articles/attachments/2024-03-27.webp" /> <a data-href="📘あまり紹介されていないけど かけがえのないNeovimプラグインたち" class="internal-link"></a> </div> %%[[📘あまり紹介されていないけど かけがえのないNeovimプラグインたち]]%% [[oil.nvim]]はツリー未対応ですが、上記の記事にもあるように『私にはツリー型のファイルエクスプローラーは必要ない』と思っていました。 それから2年ほど[[oil.nvim]]を使ってきましたが、ほとんどのケースでは問題ありませんでした。ただ、以下のようなシーンではツリーが欲しくなることが度々ありました。 - ファイルツリーでディレクトリ構造を把握したい - ツリーを表示したまま、構造変更をともなうファイルの追加・削除・移動をしたい [[Yazi]]の標準機能ではツリー表示形式で編集できませんし、他のファイルエクスプローラープラグインは[[oil.nvim]]とは操作感が違いすぎて受け付けませんでした。 ### 最近になって[[Fyler.nvim]]を使いはじめた そんなときに[[Fyler.nvim]]というプラグインの存在を知りました。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - A7Lavinraj/fyler.nvim: A neovim file manager which can edit file system like a buffer with tree view </div> <div class="link-card-v2-content"> A neovim file manager which can edit file system like a buffer with tree view - A7Lavinraj/fyler.nvim </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/19652a9c8979f69d7f6420526a1f2321f729931e22ecd5a1277ed99e0a62cbf5/A7Lavinraj/fyler.nvim" /> <a href="https://github.com/A7Lavinraj/fyler.nvim"></a> </div> [[oil.nvim]]のような操作感でツリー表示にも対応した素晴らしいプラグインでした。 > A neovim file manager which can edit file system like a buffer with tree view > >*[GitHub - A7Lavinraj/fyler.nvim: A neovim file manager which can edit file system like a buffer with tree view](https://github.com/A7Lavinraj/fyler.nvim)* 私は[[VSCode]]のようにサイドバーにファイルツリーの[[ウィンドウ (Vim)|ウィンドウ]]を固定するのは好きではありません。なので、[[oil.nvim]]のように既存の[[ウィンドウ (Vim)|ウィンドウ]]で利用しようと思っていましたが、実際に使ってみると[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]に表示したほうがしっくりくることに気づきました。 ### [[Fyler.nvim]]にはプレビューがない 数日間、[[Fyler.nvim]]を使っているうちに不便な点に気づきました。一番気になったのは、プレビューができないことです。 私が[[oil.nvim]]を使う機会が最も多かったのは、[[E2Eテスト]]用のファイルを作成・編集するときでした。[[oil.nvim]]でプレビューを出しながら移動・編集していました。そのため、[[Fyler.nvim]]でもプレビュー機能がないとかなり不便に思えました。 プレビュー機能を求めるIssueは作成されていました。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> File preview mode · Issue #70 · A7Lavinraj/fyler.nvim </div> <div class="link-card-v2-content"> Description Thank you for creating the best file tree I've seen so far! Would it be possible to add a 'file prev ... </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/76b2f5842084db90b282f42e72eee31e1c74f18e3f52bfc4e15dce0923dd6354/A7Lavinraj/fyler.nvim/issues/70" /> <a href="https://github.com/A7Lavinraj/fyler.nvim/issues/70"></a> </div> ただ、Issueの作成から1年近く進展がなく、プレビュー機能を追加するPRもマージされずにクローズされていました。 ### forkしたりPRを出したりはしたくなかった こういう場合はforkしてPRを出すのがよいのかもしれません。ただ、**対応している機能・オプションが多く、[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]しか使わない身としては、実装・検証や今後の変更への追従コストが高そう** だったため見送りました。 ### 設定ファイルでパッチをあててはみたけれど ならば、[[overseer.nvim]]のように[[Lua]]の設定ファイルだけで機能を追加できないか試したところ、プレビュー機能の追加に成功しました。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📜2026-05-05 Fyler.nvimでプレビュー表示・編集できるようにする </div> <div class="link-card-v2-content">Fyler.nvimでoil.nvim風のプレビュー表示と編集を実現した。フローティングウィンドウでファイルツリーとプレビューを並べ、カーソル移動で自動更新し、Diagnosticやgit statusも連動表示した。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" /> <a data-href="📜2026-05-05 Fyler.nvimでプレビュー表示・編集できるようにする" class="internal-link"></a> </div> %%[[📜2026-05-05 Fyler.nvimでプレビュー表示・編集できるようにする]]%% ![[2026-05-05-18-56-02.webp]] *プレビュー機能を有効にした状態* しかし、別の問題が生じてきました。プレビュー表示領域を確保するためにファイルツリーのウィンドウ幅が狭くなったので、ツリーのメタデータが表示しきれなくなりました。 それ以外にも『Confirmで `y` を押したあとに1秒ちょっとの待ち時間が生じる』といった設定ファイルだけでは解決が困難な問題があり、限界を感じていました。 ### よろしい、ならば開発だ [[Fyler.nvim]]の設定ファイルはほぼ[[AIエージェント]]に作成してもらっていたのもあり ``` 『どうせAIエージェントに任せるなら、自分でプラグインを作ってしまったほうがやりやすいのではないか?』 ``` という結論にたどり着きました。 ## [[🦉etoile.nvim]] プラグインの名称は『[[🦉etoile.nvim|etoile.nvim]]』です。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - tadashi-aikawa/etoile.nvim: A floating, editable file tree for Neovim. </div> <div class="link-card-v2-content"> A floating, editable file tree for Neovim. Contribute to tadashi-aikawa/etoile.nvim development by creating an a ... </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/1233733496/0ea19b81-2f07-4377-98cf-b82ab91aaf01" /> <a href="https://github.com/tadashi-aikawa/etoile.nvim"></a> </div> 1日で基本機能をすべて作成し、1日でバグ修正とブラッシュアップをしました。執筆時点では **コードの100%を[[Codex CLI]]が書いています**。ただ、ロジックの部分は[[Codex CLI]]とかなり議論しながら作っています。 『[[#はじめに]]』で紹介したように、[[oil.nvim]]や[[Fyler.nvim]]から強い影響を受けています。ファイルシステムをバッファのように編集する操作や、ツリー形式の表示を踏襲しています。 [[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]に特化しているため、[[oil.nvim]]や[[Fyler.nvim]]のように既存[[ウィンドウ (Vim)|ウィンドウ]]への割り当てはできません。他にも、[[oil.nvim]]や[[Fyler.nvim]]が備えている機能のうち、未対応のものがあります。 本当に必要な機能は今後追加していきますが、『あったら便利かも?』レベルのものは恐らく追加しません。 ## 機能・デモ動画の紹介 呼び出し方は3通りあり、それぞれ開く対象パスが異なります。 | コマンド | 意味 | | ---------------- | ------------------------------------------------------------ | | `:Etoile` | 最寄りのGitルートで開く<br>Git管理外ではカレントディレクトリ | | `:Etoile <path>` | `<path>` で開く | | `:EtoileCurrent` | カレントバッファのディレクトリで開く<br>[[oil.nvim]]にも対応 | 開くと[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]が開き、[[oil.nvim]]と同じように[[バッファ (Vim)|バッファ]]として編集できます。[[Fyler.nvim]]のようなツリー構成にも対応しており、[[🦉etoile.nvim]]の表示ルートを切り替えても操作できます。 ![](https://youtu.be/7whmCQuZgS4) 右側のプレビューへフォーカスを移し、通常の[[バッファ (Vim)|バッファ]]と同じように閲覧・編集できます。また、ファイルを選択すると[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]が閉じ、選択したファイルが呼び出し元の[[ウィンドウ (Vim)|ウィンドウ]]で開きます。キー操作によっては、分割した[[ウィンドウ (Vim)|ウィンドウ]]や新しい[[タブ (Vim)|タブ]]で開くこともできます。 ![](https://youtu.be/y4qDuEzcv9g) ## まとめ [[oil.nvim]]と[[Fyler.nvim]]のいいとこ取りをした[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]専用の[[Neovimプラグイン]]、[[🦉etoile.nvim]]を作成・紹介しました。 まだバージョニングはできていませんが、私自身は毎日使っており、安定してきたと感じています。少なくとも私の環境では、2週間以上バグに遭遇していません。 ツリーを確認しながら、通常の[[Neovim]]の編集操作でファイルやディレクトリを編集したい方は、ぜひお試しください。