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を公開してもいいのですが、いつまでこの構成を使うか分からないため、別のレポジトリに切り出して公開しました。
参考になれば幸いです。
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を設定することでnumber
やwrap
などをtoggleできるマッピングが追加されることです。
— GIF
類似プラグイン
mini.bracketed
[
、]
起点のマッピングを追加してくれます。
自分は[b
、]b
(バッファの切り替え)と[f
、]f
(同一階層の次のファイルと切り替え)をよく使います。
どのようなマッピングが追加されるかはここに書いてあります。
類似プラグイン
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に染めてみるのはどうでしょう?