Skip to main content

Keymaps

Global Keymaps

Set to true to enable the default keymaps and optionally set a prefix for the keymaps, which only applies to default keymaps, but not to your custom keymaps.

{
global_keymaps = true
global_keymaps_prefix = "<leader>R"
kulala_keymaps_prefix = "",
}

Custom Global Keymaps

{
global_keymaps = {
["Send request"] = { -- sets global mapping
"<leader>Rs",
function() require("kulala").run() end,
mode = { "n", "v" }, -- optional mode, default is n
desc = "Send request" -- optional description, otherwise inferred from the key
},
["Send all requests"] = {
"<leader>Ra",
function() require("kulala").run_all() end,
mode = { "n", "v" },
ft = "http", -- sets mapping for *.http files only
},
["Replay the last request"] = {
"<leader>Rr",
function() require("kulala").replay() end,
ft = { "http", "rest" }, -- sets mapping for specified file types
},
["Find request"] = false -- set to false to disable
},
}

Kulala Keymaps

Set to false to disable the default keymaps. in the Kulala UI buffer.

{
kulala_keymaps = false
}

Default is true.

Custom Kulala Keymaps

{
kulala_keymaps = {
["Show headers"] = { "H", function() require("kulala.ui").show_headers() end, },
}
kulala_keymaps = {
["Show verbose"] = false -- set false to disable
}
}

Kulala LSP Keymaps

Kulala LSP does not set any keymaps by default, but relies on Neovim's default LSP keymaps.

Some distributions, like AstroNvim, set these keymaps only for LSPs that have been setup through nvim-lspconfig or the distributions's own LSP configs. In this case, you may need to enable them yourself.

You can do this, either by enabling the default Kulala's LSP keymaps:

{
lsp = {
keymaps = true, -- enables default Kulala's LSP keymaps
}
}

by customizing them or setting to false to disable some or all of them:

{
lsp = {
keymaps = {
["<leader>ls"] = { vim.lsp.buf.document_symbol, desc = "Search Symbols" },
["<leader>lv"] = { function() Snacks.picker.lsp_symbols({ layout = { preset = "vscode", preview = "main" } }) end, desc = "Search Symbols", }, -- requires snacks.nvim
["<leader>lt"] = { "<cmd>Trouble symbols toggle focus=false<cr>", desc = "Symbols outline" }, -- requires trouble.nvim
["<leader>lS"] = { function() require("aerial").toggle() end, desc = "Symbols outline", }, -- requires aerial.nvim (recommended)
["K"] = { vim.lsp.buf.hover, desc = "Hover" },
["<leader>la"] = { vim.lsp.buf.code_action, desc = "Code Action" },
["<leader>lf"] = { vim.lsp.buf.format, desc = "Buffer Format" },
}
}
}