Keybindings
See the keybinds overview for most commonly used keybinds.
If you want to (re)map a keybinding that starts with <leader>, use Whichkey Bindings.
If the bindings are LSP (intellisense) related, use LSP Bindings.
In all other cases, use NeoVim mappings
Leader Keyโ
The default leader key is Space. This can be changed with the following
lvim.leader = "space"
Listing what is mappedโ
Use <Leader>sk to view different keybinding currently set.
To see if a particular key has already been bound:
:verbose map <TAB>
- :nmap for normal mode mappings
- :vmap for visual mode mappings
- :imap for insert mode mappings
Or just list every mapping
:map
NeoVim mappingsโ
(Re)mapping keysโ
To modify or add a keymapping:
-- X closes a buffer
lvim.keys.normal_mode["<S-x>"] = ":BufferKill<CR>"
-- Centers cursor when moving 1/2 page down
lvim.keys.normal_mode["<C-d>"] = "<C-d>zz"
Removing default mappingsโ
To remove keymappings set by LunarVim:
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
LSP Bindingsโ
To modify your LSP keybindings use lvim.lsp.buffer_mappings.[normal|visual|insert]_mode.
(Re)map a keyโ
Map your own functionality
lvim.lsp.buffer_mappings.normal_mode['H'] = { vim.lsp.buf.hover, "Show documentation" }
Or map default functionality to a different key
lvim.lsp.buffer_mappings.normal_mode['gk'] = lvim.lsp.buffer_mappings.normal_mode['K']
Remove a bindingโ
LSP bindings take precedence over regular keybindings. So in order to use a key for a regular binding, we have to remove it first
lvim.lsp.buffer_mappings.normal_mode['K'] = nil
lvim.keys.normal_mode['K'] = "<Cmd>echo Okay!<CR>"
Whichkey Bindingsโ
To add or remap keybindings for whichkey use lvim.builtin.which_key.mappings.
The leader key is already included.
Single mappingโ
Map a single key.
lvim.builtin.which_key.mappings["P"] = {
"<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects"
}
As stated above, the leader key is included. So for the above example, the keybinding becomes <leader>P
Removing a single mappingโ
Remove a single Whichkey keybind
lvim.builtin.which_key.mappings['w'] = {}
Adding a key to an existing menu/submenu.
lvim.builtin.which_key.mappings["tP"] = {
"<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects"
}
Submenu mappingโ
Map a group of keys. Definitions would be triggered by pressing <Leader>td. The name for this menu would appear as Trouble.
lvim.builtin.which_key.mappings["t"] = {
name = "Trouble",
r = { "<cmd>Trouble lsp_references<cr>", "References" },
f = { "<cmd>Trouble lsp_definitions<cr>", "Definitions" },
d = { "<cmd>Trouble lsp_document_diagnostics<cr>", "Diagnostics" },
q = { "<cmd>Trouble quickfix<cr>", "QuickFix" },
l = { "<cmd>Trouble loclist<cr>", "LocationList" },
w = { "<cmd>Trouble lsp_workspace_diagnostics<cr>", "Diagnostics" },
}
Replace all whichkey mappingsโ
To clear all whichkey bindings and replace all mappings with your own, use this form.
lvim.builtin.which_key.mappings = {
["c"] = { "<cmd>BufferClose!<CR>", "Close Buffer" },
["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" },
["h"] = { '<cmd>let @/=""<CR>', "No Highlight" },
p = {
name = "Plugins",
i = { "<cmd>Lazy install<cr>", "Install" },
s = { "<cmd>Lazy sync<cr>", "Sync" },
S = { "<cmd>Lazy clear<cr>", "Status" },
u = { "<cmd>Lazy update<cr>", "Update" },
},
}
toggleterm (terminal) mappingsโ
To change the terminal mapping:
lvim.builtin.terminal.open_mapping = "<c-t>"