【入門編】Neovimの浮動ウィンドウ(Floating Window)を使いこなす:UI/UXを向上させるカスタムダッシュボード作成ガイド – 軽量・高機能テキストエディタ生産性向上バイブル

Neovimを「あなたの相棒」に変える:Floating Windowで創る至高のダッシュボード

こんにちは。コードを書く時間を、単なる「作業」から「思考の拡張」へと昇華させる旅へようこそ。

多くのエンジニアがNeovimに惹かれるのは、それが単なるエディタではなく、「自分の脳の出力インターフェース」を完全に制御できる唯一無二の環境だからです。今日は、既存のプラグインという「既製品」をただインストールするのではなく、Neovimの核心である`nvim_open_win` APIを直接叩き、自分だけのダッシュボードを創り上げる技術をお伝えします。

これをマスターすれば、エディタを立ち上げた瞬間、必要な情報が美しく配置され、あなたのクリエイティビティが即座に最大化される環境が手に入ります。

—

1. なぜ「自作のFloating Window」なのか?

既存のダッシュボードプラグインは便利です。しかし、それらは「汎用的な機能」を詰め込んでいるため、あなたのワークフローには不要な情報も含まれがちです。

`nvim_open_win`を活用する最大のメリットは、「情報のノイズをゼロにできること」です。

  • 最近開いたファイルへの高速アクセス
  • 今日のタスク(Todo.txtなど)の表示
  • プロジェクト固有のコマンド実行ボタン

これらを、あなたの視線の動きに合わせて、最も見やすい位置に、最も美しいデザインで配置する。この「微細なこだわり」の積み重ねこそが、長時間のコーディングにおいて圧倒的な生産性の差を生みます。

—

2. 準備:Luaの力でNeovimの深淵へ

Neovimの拡張はすべてLuaで行います。まずは、設定ファイル(通常は `~/.config/nvim/init.lua`)を開いてください。

浮動ウィンドウを生成する基本ロジック

まずは「Hello World」として、中央に小さなウィンドウを出すコードを書きましょう。

— 浮動ウィンドウを作成する関数
local function create_dashboard()
— 1. バッファを作成(無名バッファ)
local bufnr = vim.api.nvim_create_buf(false, true)

— 2. ウィンドウのオプション設定
local opts = {
relative = ‘editor’, — エディタ全体を基準にする
width = 40, — 幅
height = 10, — 高さ
col = (vim.o.columns – 40) / 2, — 中央寄せの計算
row = (vim.o.lines – 10) / 2, — 中央寄せの計算
style = ‘minimal’, — 余計なボーダーや行番号を消す
border = ‘rounded’ — 美しい角丸ボーダー
}

— 3. ウィンドウを開く
local win = vim.api.nvim_open_win(bufnr, true, opts)

— 4. ダッシュボードに文字を書き込む
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, {
” Welcome back, Architect.”,
“”,
” [1] Open recent files”,
” [2] Run test suite”,
” [3] Exit”
})
end

— 起動時に実行する設定(VimEnterイベントを使用)
vim.api.nvim_create_autocmd(“VimEnter”, {
callback = create_dashboard
})

—

3. 現場で役立つ「こだわり」の実装術

ただウィンドウを出すだけでは、まだ「プロ」とは言えません。現場のエンジニアが本当に必要とするのは、「直感的な操作性」です。

鍵となる「マッピング」の注入

ウィンドウを開くだけでなく、そのウィンドウ内でキー入力を受け付ける工夫が必要です。上記の `create_dashboard` 関数内に、以下のようなマッピングを追加してみてください。

— ウィンドウ内での操作を定義
vim.api.nvim_buf_set_keymap(bufnr, ‘n’, ‘1’, ‘:Telescope oldfiles‘, {noremap = true})
vim.api.nvim_buf_set_keymap(bufnr, ‘n’, ‘3’, ‘:q‘, {noremap = true})

このように、「自分の脳内のショートカット」と「ダッシュボードの表示内容」を直結させることで、思考のコンテキストスイッチを最小限に抑えることができます。

—

4. この設定がもたらす「計り知れない利益」

なぜわざわざLuaでこれを書くのか。それは「自分専用のUX」を定義する権利を得るためです。

1. 認知的負荷の低減: 必要な情報だけを視界に入れることで、エディタを開いた瞬間に「何をすべきか」が脳に直接入力されます。
2. 圧倒的な高速起動: 大規模なプラグインを読み込むより、数行のLuaスクリプトの方が遥かに軽量で、安定しています。
3. メンテナンス性: 構造がシンプルなため、将来的に「特定のプロジェクトの時だけダッシュボードを変える」といったカスタマイズが、数行のコード修正で完結します。

—

最後に:あなたの開発環境は、あなたの鏡です

ツールを「使わされる」側から、ツールを「設計する」側へ回ったとき、エンジニアとしての視座は劇的に変わります。

最初は小さな浮動ウィンドウかもしれません。しかし、そのウィンドウに何を表示し、どう操作させるかを考える行為自体が、あなたの開発ワークフローを研ぎ澄ますプロセスそのものです。

さあ、まずはこのコードを `init.lua` に貼り付けてみてください。自分だけのウィンドウが浮かび上がったとき、きっと「自分の環境を支配している」という心地よい実感が湧いてくるはずです。

もし分からないことがあれば、いつでも聞いてください。あなたのNeovimが、世界で最も快適な場所になるまで、何度でも伴走します。

タイトルとURLをコピーしました