skip to content
私的歌詞倉庫

開発環境.nvim 2024

/ 6 min read

Updated:
Table of Contents

はじめに

この記事はGMOペパボ エンジニア アドベントカレンダーの20日目です。昨日はゆむさんの技術コミュニティと私でした。明日はToshihiko Sakaiさんです。

https://adventar.org/calendars/10036/embed

今年も去年に続き、nvimのプラグインを紹介します。ほとんどが今年使い始めたプラグインです。

去年の紹介はこちらです。

開発環境.nvim 2023

toggleterm.nvim

GitHub - akinsho/toggleterm.nvim: A neovim lua plugin to help easily manage multiple terminal windows

このプラグインはnvimを開きつつ、ターミナルモードをいい感じに表示するプラグインです。

ターミナルを表示するときに画面上にfloatで表示したいときと、下画面に分割して表示したいときがあるので、それをコマンドで切り替えれるようにしています。

floatは画面上に大きく表示できるので、実行したテスト結果を細かく見たいときなどに使っています。

{
"akinsho/toggleterm.nvim",
version = "*",
config = function()
require("toggleterm").setup({})
-- Alt-f でfloatでターミナルを開く
vim.keymap.set("n", "<A-f>", "<cmd>ToggleTerm direction=float<CR>")
vim.keymap.set("t", "<A-f>", "<cmd>ToggleTerm<CR>")
-- Alt-d で水平でターミナルを開く
vim.keymap.set("n", "<A-d>", "<cmd>ToggleTerm direction=horizontal<CR>")
vim.keymap.set("t", "<A-d>", "<cmd>ToggleTerm<CR>")
end,
}
水平分割で表示

水平分割で表示

folatで表示

folatで表示

copy-file-path.nvim

GitHub - mogulla3/copy-file-path.nvim: A Neovim plugin to copy file path to the clipboard.

ファイルパスをコピーするプラグインです。以前はcopypath.vimというプラグインを使っていたのですが、より高機能なこちらのプラグインに移行しました。

このプラグインはファイル名、相対パス、絶対パスをコマンドで簡単にコピーできるのでよく使っています。

{
{ "mogulla3/copy-file-path.nvim" },
}

mini.nvim

GitHub - echasnovski/mini.nvim: Library of 40+ independent Lua modules improving overall Neovim (version 0.8 and higher) experience with minimal effort

こちらのプラグインは、いくつかのプラグインから構成されているまとめプラグインみたいなもので、mini.nvimを入れなくても使いたいプラグインを指定して使うことができます。

その中で自分が使っているプラグインを紹介します。

echasnovski/mini.starter

GitHub - echasnovski/mini.starter: Neovim Lua plugin with fast and flexible start screen. Part of ‘mini.nvim’ library.

こちらはnvimを起動したときの画面を変更することができ、直近開いていたファイルを表示してれます。作業の続きをする時に便利です。

{
"echasnovski/mini.starter",
version = false,
config = function()
require("mini.starter").setup()
end,
}
直近で開いたファイルを一覧で表示

直近で開いたファイルを一覧で表示

echasnovski/mini.indentscope

GitHub - echasnovski/mini.indentscope: Neovim Lua plugin to visualize and operate on indent scope. Part of ‘mini.nvim’ library.

インデントを可視化してくれるプラグインです。記憶があやふやなのですが、以前に他のインデントを可視化するプラグインを使った時ににRubyではうまいこと動いてくれなくて、これを使うようになりました。RubyとPHP、Vue(JavaScript)で使っている感じ、きちんと動いている気がします。

インデントを可視化する時のアニメーションが綺麗で、好きです(公式サイトのデモがわかりやすいです)。

{
"echasnovski/mini.indentscope",
version = false,
config = function()
require("mini.indentscope").setup()
end,
}
インデントを可視化(画面左端の青い縦線)

インデントを可視化(画面左端の青い縦線)

mini.cursorword

GitHub - echasnovski/mini.cursorword: Neovim Lua plugin for autohighlighting word under cursor. Part of ‘mini.nvim’ library.

カーソル下の単語をハイライトしてくれるプラグインです。このプラグインはあくまで同じ単語をハイライトしてくれるだけで、変数のスコープを意識してハイライトはしません。

{
"echasnovski/mini.cursorword",
version = false,
config = function()
require("mini.cursorword").setup()
end,
}
text_to_moonをハイライト

text_to_moonをハイライト

mini.comment

GitHub - echasnovski/mini.comment: Neovim Lua plugin for fast and familiar per-line commenting. Part of ‘mini.nvim’ library.

コメントアウトをするプラグインです。コメントアウトしている状態でコマンドを実行するとコメントアウトを外してくれます。

自分はleaderキーに/でコメントアウトするようにしています。

{
"echasnovski/mini.comment",
version = false,
config = function()
require("mini.comment").setup({
mappings = {
comment = "<Leader>/", -- 何の設定かよくわかってない…
comment_visual = "<Leader>/", -- vモードで選択している範囲をコメントアウト
comment_line = "<Leader>//", -- 現在の行をコメントアウト
},
})
end,
}

mini.bufremove

GitHub - echasnovski/mini.bufremove: Neovim Lua plugin to remove buffers. Part of ‘mini.nvim’ library.

バッファを削除するプラグインです。VSCodeやXCode、Android Studioでタブを開きすぎた時にCmd(Ctrl) + w でタブを消しているのでそれをnvimでも再現するために入れました。

自分は、Ctrl + w した後にw で現在開いているタブを削除するように設定しました。

{
"echasnovski/mini.bufremove",
version = false,
config = function()
require("mini.bufremove").setup()
local set = vim.keymap.set
set("n", "<C-w>w", "<Cmd>bdelete<CR>")
end,
}

終わりに

今年使い始めたプラグインを紹介しました。miniシリーズのプラグインは自分も全部は知らないのですが、便利なのでぜひおすすめしたいです!