Wagomu no Akibako

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に​染めてみるのは​どうでしょう?