輪ごむの空き箱

mini.nvimを使って環境構築したら優勝した


この記事はVim駅伝2024年7月12日(金)の記事です。

前回の記事は kawarimidoll さんの「Vimでvim-jpラジオを聞く」という記事でした。

次回の記事は 7月15日(月) に投稿される予定です。


はじめに

Vimmerたるもの定期的に自分の設定ファイルを新しくしたくなるものです。(諸説あり)
学生の時によくLINEのアカウントを作りなおしていた友達の気持ちが少しだけ分かりました。

今回はmini.nvimで環境構築をしてみたら使い勝手がとても良かったのでシェアしよう!!という記事です。

mini.nvimとは

mini.nvimというプラグインをご存知でしょうか?
プラグインマネージャーや補完等の便利なプラグインを提供しているプラグイン集のようなものです。

詳細な説明についてはこちらの記事におまかせします。

この記事を書いたときよりもプラグインが増えて2024年7月現在、42個のプラグインがあります。
次の機会にはmini.nvimの各プラグインの紹介記事を書こうと思います。

mini.nvimベースで環境構築した

今回使ったプラグインについて説明します。
mini.nvim以外で入れたプラグインはlazygitとLSP関連、treesitterのみで、この記事では紹介しません。

ここで自分のdotfilesを公開してもいいのですが、いつまでこの構成を使うか分からないため、別のレポジトリに切り出して公開しました。
参考になれば幸いです。

GitHub - staticWagomU/my-mini-config: mini.nvimベースのnvimの設定ファイル mini.nvimベースのnvimの設定ファイル. Contribute to staticWagomU/my-mini-config development by creating an accou...
ogp

mini.deps

プラグインマネージャー。

詳細については、手前味噌ですがこちらの記事をご覧いただければと思います。

mini.depsが初心者にも扱いやすいのではないかという提案 - 輪ごむの空き箱 mini.depsが初心者にも扱いやすいのではないかという提案

類似プラグイン

mini.basics

おすすめ設定をしてくれます。

now(function()
  require('mini.basics').setup {
    options = {
      extra_ui = true, -- winblendとか設定される
      win_borders = 'single',
    },
    mappings = {
      option_toggle_prefix = 'm',
    },
  }
end)

mini.basicsの特徴は、option_toggle_prefixを設定することでnumberwrapなどをtoggleできるマッピングが追加されることです。

— GIF

類似プラグイン

mini.bracketed

[]起点のマッピングを追加してくれます。
自分は[b]b(バッファの切り替え)と[f]f(同一階層の次のファイルと切り替え)をよく使います。

どのようなマッピングが追加されるかはここに書いてあります。

GitHub - echasnovski/mini.bracketed: Neovim Lua plugin to go forward/backward with square brackets. Part of 'mini.nvim' library. Neovim Lua plugin to go forward/backward with square brackets. Part of 'mini.nvim' library. ...
ogp

類似プラグイン

mini.comment

コメントアウトできます。
自分はgccしか使わないです。

※ Neovim 0.10以降はmini.commentを元にビルトインのコメントアウト機能が実装されています。

類似プラグイン

mini.completion

LSPの自動補完をしてくれます。更には、signature helpも表示してくれます。
setup()を呼び出すだけで何もせずともLSPと連携してくれるびっくり仕様。

now(function()
  -- 補完
  require('mini.completion').setup()
end)

類似プラグイン

mini.cursorword

カーソル下の単語にunderlineがつきます。

類似プラグイン

mini.diff

gitsignsと一緒です。

類似プラグイン

mini.extra

mini.nvimに加えるほどではない便利関数が追加されます。
自分はmini.pickのために導入しています。

mini.files

ファイラーです。
他のファイラープラグインとは違うUIをしていておもしろい。

類似プラグイン

mini.statusline

ステータスラインです。

mini.surround

surroundプラグインです。

mini.tabline

タブラインです。

mini.git

gitインテグレーションプラグインです。
自分は全然使いこなせておらず、ターミルに戻ることなく:Git hogeを実行できるプラグインとして使っています。

mini.icons

iconを表示します。

now(function()
  -- nvim_web_deviconsの代わり
  require('mini.icons').setup()
  MiniIcons.mock_nvim_web_devicons()
end)

mini.indentscope

インデントを可視化させます。

mini.notify

通知をかっこよくみせます。

mini.pairs

括弧などの対応する記号を自動的に挿入します。

mini.pick

telescopeのようなpickerプラグインです。
自分はこのような設定で使っています。
このうちの<Cmd>Pick buf_lines<Cr>を使うためにmini.extraを導入しています。

later(function()
  -- telescope的なやつ
  require('mini.pick').setup()
  vim.keymap.set('n', [[\e]], '<Cmd>Pick explorer<Cr>', opts)
  vim.keymap.set('n', [[\b]], '<Cmd>Pick buffers<Cr>', opts)
  vim.keymap.set('n', [[\h]], '<Cmd>Pick help<Cr>', opts)
  vim.keymap.set('n', [[\\]], '<Cmd>Pick grep<Cr>', opts)
  vim.keymap.set('n', [[\f]], '<Cmd>Pick files<Cr>', opts)
  vim.keymap.set('n', [[\g]], '<Cmd>Pick git_files<Cr>', opts)
  vim.keymap.set('n', [[\l]], '<Cmd>Pick buf_lines<Cr>', opts)
  vim.keymap.set('n', [[\m]], '<Cmd>Pick visit_paths<Cr>', opts)
end)

mini.splitjoin

gSでJの逆の操作をしてくれます。

mini.starter

スタート画面を表示させます。

mini.visits

mr.vimのように以前に訪問したファイルを記録してくれます。
mini.pickと連携させるために導入しています。

おわりに

あまりこだわりがない人はmini.nvimに染めてみるのはどうでしょう?