⌨️

Lazyvimのキーマップカスタマイズ

2024/12/18に公開
2

https://adventar.org/calendars/10040

Lazyvimではある程度デフォルトでキーマップが設定されています。
デフォルトで使用しているキーでは足りない場合キーを追加することができます。
自分の使用しているmacではcontrol+←↓→↑が使えません。
Lazyvimのデフォルトではウィンドウズのリサイズが割当られています。
マウスを使ってウィンドウの境界を引っ張れば解決しそうですが、使用できないキーがあるのは不便です。
そこで今回は何も割り当てられていない近くにあったaltキーにお願いします。

PC何使っているの?
uname -a
Darwin appurunoMac-mini.local 23.6.0 Darwin Kernel Version 23.6.0: Thu Sep 12 23:34:49 PDT 2024; root:xnu-10063.141.1.701.1~1/RELEASE_ARM64_T8103 arm64

appurunoMac-mini
os 23.6.0 Sonoma
RELEASE_ARM64_T8103 
m1 mac miniですね。

appurunoMacという書き方、突然はなしかけられて翻訳ミスしたみたいで可愛いですね。
しばらく経ったらAppleMac-miniに変えられていました。

以降記事の中でnvim/と記載する場合以下のフォルダー以下を指します。
windows: C:\Users\user\AppData\Local\nvim\
linux: /home/user/.config/nvim

設定内容

/nvim/lua/keymap.lua

local map = vim.keymap.set

local uname = vim.uv.os_uname()
print(uname.sysname)

-- macos用の設定
if uname.sysname == "Darwin" then
  -- Resize window using <ctrl> arrow keys
  map("n", "<M-Up>", "<cmd>resize +2<cr>", { desc = "Increase Window Height" })
  map("n", "<M-Down>", "<cmd>resize -2<cr>", { desc = "Decrease Window Height" })
  map("n", "<M-Left>", "<cmd>vertical resize -2<cr>", { desc = "Decrease Window Width" })
  map("n", "<M-Right>", "<cmd>vertical resize +2<cr>", { desc = "Increase Window Width" })
end

自分の環境では、windows、ubuntu等あるのでもしかしたらlua/setup/mac.lua,lua/setup/wsl.lua等のファイルを作成して色々と初期化設定をするかもしれませんが一旦keymap.luaに作成します。
Lazyvimではキーをセットする際safe_keymap_setが用意されています。safe_keymap_setはvim.keymap.setのwrapperした関数です。
safe_keymap_setをユーザが使うことは非推奨のようです。vim.keymap.setを使用します。
vim.uv.os_uname()でkernelの名前を確認してdarwinだったらmacの処理を行います。
:h nvim_set_keymapと調べてみます。

nvim_set_keymap({mode}, {lhs}, {rhs}, {opts})

normal modeのときにだけ動いてほしいので"n"とモードに書いておきます。 insert modeやvisual modeの時は不要
:h <M- と確認するとキーマップが分かります。
alt-key or meta-keyと自分の環境で書かれています。少しhelpの上に移動してUp,Down,Left,Rightがあります。
続けてコマンドと、説明を書いておきます。

まとめ

自分の環境に合わせてkeymapを変更してみました。
自分のubuntu環境やwsl環境もまだ少し使いづらいキーがあるので修正したいと思います。

ご自身の環境に合わせて使ってみてください。

Discussion