【Neovimの設定】keymaps.lua

By jasmify , 27 7月 2025

 

How I Setup Neovim On My Mac To Make it AMAZING in 2024

このサイトで紹介されているNeovimの設定をもとに、コードの各部分をAIが詳しく解説。

そのまとめです。

keymaps.lua

vim.g.mapleader = " "

local keymap = vim.keymap -- for conciseness

keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })

keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })

-- increment/decrement numbers
keymap.set("n", "<leader>+", "<C-a>", { desc = "Increment number" }) -- increment
keymap.set("n", "<leader>-", "<C-x>", { desc = "Decrement number" }) -- decrement

-- window management
keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" }) -- split window vertically
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" }) -- split window horizontally
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" }) -- make split windows equal width & height
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" }) -- close current split window

keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" }) -- open new tab
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" }) -- close current tab
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" }) --  go to next tab
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" }) --  go to previous tab
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" }) --  move current buffer to new tab

このNeovimのLuaによるキーマップ設定は、ユーザーの操作を効率化するためのショートカットを定義しています。

以下、コードの各部分について詳しく解説します。

解説

🔧 1. vim.g.mapleader = " "

これはNeovimのリーダーキーを空白(スペース)に設定しています。
リーダーキーとは、ショートカットの起点となるキーで、他のキーと組み合わせてカスタム操作を呼び出すために使います。

🔑 2. local keymap = vim.keymap

これは vim.keymap を短く書くために keymap という変数に代入しています。
以下で keymap.set(...) を使ってキーマッピングを定義しています。

📝 3. keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })

  • モード"i"(インサートモード)
  • キーjk
  • アクション: エスケープキー(ノーマルモードへ)
  • 説明jkと素早く打つことでインサートモードを抜ける(実際の<ESC>キーを押す代わり)

🔍 4. keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })

  • モード"n"(ノーマルモード)
  • キー<leader>nh → スペース + nh
  • アクション: 検索結果のハイライトを消す :nohlsearch

🔢 5. インクリメント/デクリメント

keymap.set("n", "<leader>+", "<C-a>", { desc = "Increment number" })
keymap.set("n", "<leader>-", "<C-x>", { desc = "Decrement number" })
  • <leader>+: カーソル下の数値を1増やす
  • <leader>-: カーソル下の数値を1減らす

🪟 6. ウィンドウ管理

keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" })
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" })
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" })
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" })
  • <leader>sv: 垂直分割
  • <leader>sh: 水平分割
  • <leader>se: ウィンドウのサイズを揃える
  • <leader>sx: 現在のスプリット(分割ウィンドウ)を閉じる

🗂️ 7. タブ管理

keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" })
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" })
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" })
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" })
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" })
  • <leader>to: 新しいタブを開く
  • <leader>tx: 現在のタブを閉じる
  • <leader>tn: 次のタブへ移動
  • <leader>tp: 前のタブへ移動
  • <leader>tf: 現在のバッファ(ファイル)を新しいタブで開く

まとめ

この設定は、Neovimの使い勝手を以下のように向上させています:

  • jk で素早くノーマルモードへ
  • スペースキーを起点に直感的なショートカット
  • ウィンドウ・タブ操作をすばやく実行
  • 数値の編集も簡単に

 

コメント