Skip to content

6.Customizing Keymaps

yousefhadder edited this page Mar 8, 2026 · 2 revisions

Customizing Keymaps

markdown-plus.nvim exposes <Plug> mappings for all actions so you can fully customize your bindings.

Disable defaults

require("markdown-plus").setup({
  keymaps = {
    enabled = false,
  },
})

Create your own mappings

-- formatting
vim.keymap.set("n", "<C-b>", "<Plug>(MarkdownPlusBold)")
vim.keymap.set("x", "<C-b>", "<Plug>(MarkdownPlusBold)")
vim.keymap.set("x", "<C-e>", "<Plug>(MarkdownPlusEscapeSelection)")

-- code blocks
vim.keymap.set("n", "[b", "<Plug>(MarkdownPlusCodeBlockPrev)")
vim.keymap.set("n", "]b", "<Plug>(MarkdownPlusCodeBlockNext)")
vim.keymap.set("n", "<localleader>cl", "<Plug>(MarkdownPlusCodeBlockChangeLanguage)")

-- headers
vim.keymap.set("n", "gn", "<Plug>(MarkdownPlusNextHeader)")
vim.keymap.set("n", "gp", "<Plug>(MarkdownPlusPrevHeader)")

-- thematic breaks
vim.keymap.set("n", "<localleader>th", "<Plug>(MarkdownPlusInsertThematicBreak)")

Table mappings (v2 naming)

Table <Plug> mappings use the standardized MarkdownPlusTable* names.

Examples:

vim.keymap.set("n", "<localleader>Tc", "<Plug>(MarkdownPlusTableCreate)")
vim.keymap.set("n", "<localleader>Tf", "<Plug>(MarkdownPlusTableFormat)")
vim.keymap.set("n", "<localleader>Tn", "<Plug>(MarkdownPlusTableNormalize)")
vim.keymap.set("n", "<localleader>Tj", "<Plug>(MarkdownPlusTableMoveRowDown)")
vim.keymap.set("n", "<localleader>Tk", "<Plug>(MarkdownPlusTableMoveRowUp)")

Override only some defaults

You can keep defaults enabled and map additional shortcuts:

require("markdown-plus").setup({
  keymaps = { enabled = true },
})

-- extra shortcut for bold
vim.keymap.set("n", "<C-b>", "<Plug>(MarkdownPlusBold)")

Defaults are only set when the target <Plug> is not already mapped, so your custom mappings win.

Discover available <Plug> mappings

Use vimdoc for the complete up-to-date list:

  • :help markdown-plus-keymaps
  • :help markdown-plus-plug-mappings

Clone this wiki locally