🌔

LunarVimのterminal modeでctrl-hしたい

2024/11/14に公開

背景

つい最近、社内で開発環境の話をしました。同僚🎧にNeoVimを使っている方がいて、やはりカッコ良すぎたのでNeoVimを始めてみることにしました。
この手のものは一から設定しだすと沼るので、LunarVimを使って始めてみることにしました。

LunarVimにはNeoVimのIDEライクな設定がデフォルトでごっそり入っています。

いざ使い始めるとterminalのショートカットがうまく使えなくて困ったのでどう対処したかをここに残しておきます。
もう少し具体的に言うと、ctrl-hでdeleteしたり、ctrl-lクリアしたりがうまく動きませんでした。他のショートカットに割り当てられてました。

terminalでctrl-hやctrl-lのショートカットを使う

結論

以下の設定によりうまくいってなかった。

~/.local/share/lunarvim/lvim/lua/lvim/keymappings.lua
  term_mode = {
    -- Terminal window navigation
    ["<C-h>"] = "<C-\\><C-N><C-w>h",
    ["<C-j>"] = "<C-\\><C-N><C-w>j",
    ["<C-k>"] = "<C-\\><C-N><C-w>k",
    ["<C-l>"] = "<C-\\><C-N><C-w>l",
  },

config.luaに以下設定をすることで、ctrl-hctrl-lが使えるようになりました。

config.lua
vim.keymap.del("t", "<C-h>")
vim.keymap.del("t", "<C-j>")
vim.keymap.del("t", "<C-k>")
vim.keymap.del("t", "<C-l>")

->今の設定はこっち。

これはやったけど関係なかった

まず初期設定だと、ctrl-h/j/k/lはwindowの移動に割り当てられています。ここが原因かと思い、公式を参考に以下の設定をしました。

config.lua
lvim.keys.normal_mode["<C-h>"] = false
lvim.keys.normal_mode["<C-j>"] = false
lvim.keys.normal_mode["<C-k>"] = false
lvim.keys.normal_mode["<C-l>"] = false

移動はしなくなったのですが、まだうまく動きませんでした。(ノーマルモードに変わるショートカットになった?)

追記

同僚🎧に教えてもらいました。

config.lua
lvim.keys.term_mode["<C-h>"] = false
lvim.keys.term_mode["<C-j>"] = false
lvim.keys.term_mode["<C-k>"] = false
lvim.keys.term_mode["<C-l>"] = false

lunarvimの場合、term_modeでターミナルモードを指定して、falseにすればよかったです。
自分は下部にターミナルを出すことが多く縦方向のウィンドウ移動は残しておきたかったので、最終的に以下の設定にしました。

config.lua
lvim.keys.term_mode["<C-h>"] = false
-lvim.keys.term_mode["<C-j>"] = false
-lvim.keys.term_mode["<C-k>"] = false
lvim.keys.term_mode["<C-l>"] = false

感想

設定難しいけど、かっこいいから使いこなしていきたい。
🎧感謝

Discussion