summaryrefslogtreecommitdiff
path: root/nvim/lua/config/keymaps.lua
blob: 5026df6651c85a50d3d96ed7bbe6d61b93f1b834 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
vim.keymap.set("n", "<leader>c", "<C-w>c", { noremap = true, silent = true, desc = "Close window" })
vim.keymap.set("n", "<leader>o", "<C-w>o", { noremap = true, silent = true, desc = "Close other windows" })

-- z means laZy (plugin manager)
vim.keymap.set("n", "<leader>z", ":Lazy<CR>", { noremap = true, silent = true, desc = "Open Lazy.nvim" })

-- LSP binds
-- default gd searches only in current buffer as a keyword
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { noremap = true, silent = true, desc = "Open definition" })

-- Fugitive shortcuts
vim.keymap.set(
	"n",
	"<leader>gd",
	":Gvdiffsplit<CR>",
	{ noremap = true, silent = true, desc = "Git diff (unstaged changes)" }
)
vim.keymap.set(
	"n",
	"<leader>gD",
	":Gvdiffsplit HEAD<CR>",
	{ noremap = true, silent = true, desc = "Git diff (all changes after HEAD)" }
)
vim.keymap.set("n", "<leader>gs", ":Git<CR>", { noremap = true, silent = true, desc = "Git status" })
vim.keymap.set("n", "<leader>gb", ":Git blame<CR>", { noremap = true, silent = true, desc = "Git blame" })
vim.keymap.set("n", "<leader>gl", ":Git log<CR>", { noremap = true, silent = true, desc = "Git log" })
vim.keymap.set("n", "<leader>gL", ":0Gclog<CR>", { noremap = true, silent = true, desc = "Git log: this file" })
vim.keymap.set("n", "<leader>ge", ":Gedit<CR>", { noremap = true, silent = true, desc = "Git: return to worktree" })
vim.keymap.set("n", "<leader>go", ":GBrowse<CR>", { noremap = true, silent = true, desc = "Git: open in browser" })

vim.keymap.set(
	"n",
	"<leader>e",
	":lua MiniFiles.open(vim.api.nvim_buf_get_name(0), false)<CR>",
	{ noremap = true, silent = true, desc = "File Explorer" }
)
vim.keymap.set("n", "<leader>aa", ":argadd<CR>:argdedupe<CR>", { noremap = true, silent = true, desc = "Add to args" })
vim.keymap.set("n", "<leader>ad", ":argdelete %<CR>", { noremap = true, silent = true, desc = "Delete from args" })
vim.keymap.set("n", "<leader>lr", ":lsp restart<CR>", { noremap = true, silent = true, desc = "LSP: restart" })
vim.keymap.set("n", "<leader>ld", ":lsp disable<CR>", { noremap = true, silent = true, desc = "LSP: stop" })
vim.keymap.set("n", "<leader>le", ":lsp enable<CR>", { noremap = true, silent = true, desc = "LSP: start" })
vim.keymap.set("n", "<leader>li", ":checkhealth vim.lsp<CR>", { noremap = true, silent = true, desc = "LSP: info" })

vim.keymap.set("n", "<leader>fm", require("conform").format, { noremap = true, silent = true, desc = "Format code" })