My simple neovim config
1-- Map leader config
2vim.cmd.timeoutlen = 0
3local function map(mode, l, r, opts)
4 opts = opts or {}
5 if type(mode) == "table" then
6 for _, m in ipairs(mode) do
7 vim.keymap.set(m, l, r, opts)
8 end
9 else
10 vim.keymap.set(mode, l, r, opts)
11 end
12end
13map({ "n", "v" }, "<leader>p", '"+p', { desc = "Paste from clipboard" })
14map({ "n", "v" }, "<leader>y", '"+y', { desc = "Yank to clipboard" })
15map("t", "<ESC>", "<C-\\><C-n>", { desc = "Exit terminal" })
16map("n", "<leader>zz", "<cmd>ZenMode<CR>", { desc = "Toggle ZendMode" })
17
18-- Register LSP mappings
19vim.api.nvim_create_autocmd("LspAttach", {
20 group = vim.api.nvim_create_augroup("UserLspConfig", {}),
21 callback = function(args)
22 map("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code Action" })
23 map("n", "<leader>R", vim.lsp.buf.rename, { desc = "Rename" })
24 map("n", "<leader>fl", require("telescope.builtin").lsp_document_symbols, { desc = "LSP Document Symbols" })
25 map("n", "gd", vim.lsp.buf.definition, { desc = "Goto Definition" })
26 map("n", "<leader>gr", require("telescope.builtin").lsp_references, { desc = "References" })
27 map("n", "<leader>gi", require("telescope.builtin").lsp_implementations, { desc = "Implementations" })
28 map("n", "K", vim.lsp.buf.hover, { desc = "Hover (LSP)" })
29 end,
30})