Open3
[2024年版]Neovimの環境構築を見直す
Neovimをインストールする
もしNeovimをまだインストールしていない、もしくは最新版したい場合は以下のコマンドでNeovimをインストールしよう
brew install
どうやら2024/11/29の段階ではv0.10.2
が最新みたい
NVIM v0.10.2
Build type: Release
LuaJIT 2.1.1732813678
Run "nvim -V1 -v" for more info
nvim
コマンドで以下の画面が表示されたら成功。
Color themeを設定する
solarized-osakaを使用する。
Package managerにはLazyVimを使用する。
LazyVimをインストールする
LazyVimの公式に導入するにあたって必要となる項目が記載されているので、まずはそれをインストールする。
すでにNeoVimの設定ファイルを記載している場合はバックアップを作成してから、LazyVimを導入する。
mv ~/.config/nvim{,.bak}
公式のStartバージョンをGithubからクローンする
git clone https://github.com/LazyVim/starter ~/.config/nvim
クローン時に付いてきたGitを削除する、その後にご自身のGitで管理するようにします。
rm -rf ~/.config/nvim/.git
nvim
実行した時に以下の画面のようになればLazyVimのインストールは完了。
soralized osakaを設定する
以下のコマンドでNeoVimを起動します
nvim ~/.config/nvim/lua/plugins/colorscheme.lua
起動したら以下の内容を記述する
return {
"craftzdog/solarized-osaka.nvim",
lazy = false,
priority = 1000,
opts = {},
}
以下のコマンドでNeoVimを起動する
nvim ~/.config/nvim/lua/config/lazy.lua
以下の内容に書き換える
{ "LazyVim/LazyVim", import = "lazyvim.plugins", opts = { colorscheme = "solarized-osaka" } },
これらが完了したら一度:wq
でターミナルに戻り再度nvim
でNeoVimを起動します
色味が変わっていれば成功で、一応以下の画像のようにLoadedにsolarized-osakaがあれば大丈夫です
キーマッピングを設定する
考えるのがめんどくさい人は以下をコピペするかKeymap公式にサンプルもあるのでそちらを使用するかお好きな方で。
local map = LazyVim.safe_keymap_set
local opts = { noremap = true, silent = true }
-- Move to Window
map("n", "sh", "<C-w>h", { desc = "Go to Left Window", remap = true })
map("n", "sj", "<C-w>j", { desc = "Go to Lower Window", remap = true })
map("n", "sk", "<C-w>k", { desc = "Go to Upper Window", remap = true })
map("n", "sl", "<C-w>l", { desc = "Go to Right Window", remap = true })
-- Select all
map("n", "<C-a>", "gg<S-v>G")
-- New tab
map("n", "te", ":tabedit<Return>", opts)
map("n", "<tab>", ":tabnext<Return>", opts)
map("n", "<s-tab>", ":tabprev<Return>", opts)
-- Split window
map("n", "ss", ":split<Return>", opts)
map("n", "sv", ":vsplit<Return>", opts)
-- Lazy
map("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Lazy" })
-- Formatting
map({ "n", "v" }, "<leader>cf", function()
LazyVim.format({ force = true })
end, { desc = "Format" })
-- Diagnostic
local diagnostic_goto = function(next, severity)
local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
severity = severity and vim.diagnostic.severity[severity] or nil
return function()
go({ severity = severity })
end
end
map("n", "<leader>cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" })
map("n", "]d", diagnostic_goto(true), { desc = "Next Diagnostic" })
map("n", "[d", diagnostic_goto(false), { desc = "Prev Diagnostic" })
map("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" })
map("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error" })
map("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" })
map("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" })
-- Toggle options
LazyVim.format.snacks_toggle():map("<leader>uf")
LazyVim.format.snacks_toggle(true):map("<leader>uF")
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
Snacks.toggle.diagnostics():map("<leader>ud")
Snacks.toggle
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
:map("<leader>uc")
if vim.lsp.inlay_hint then
Snacks.toggle.inlay_hints():map("<leader>uh")
end