Add neovim config
This commit is contained in:
124
nvim/lua/config/keymaps.lua
Normal file
124
nvim/lua/config/keymaps.lua
Normal file
@@ -0,0 +1,124 @@
|
||||
-- Setup leader key
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
local keymap = vim.keymap
|
||||
|
||||
-- Vim modes:
|
||||
-- n Normal mode map. Defined using ':nmap' or ':nnoremap'.
|
||||
-- i Insert mode map. Defined using ':imap' or ':inoremap'.
|
||||
-- v Visual and select mode map. Defined using ':vmap' or ':vnoremap'.
|
||||
-- x Visual mode map. Defined using ':xmap' or ':xnoremap'.
|
||||
-- s Select mode map. Defined using ':smap' or ':snoremap'.
|
||||
-- c Command-line mode map. Defined using ':cmap' or ':cnoremap'.
|
||||
-- o Operator pending mode map. Defined using ':omap' or ':onoremap'.
|
||||
|
||||
-- Reserved firs characters:
|
||||
-- +/- - numbers
|
||||
-- c - [C]lear
|
||||
-- d - [D]iagnostic
|
||||
-- e - File [E]xplorer
|
||||
-- f - [F]ind
|
||||
-- g - [G]it
|
||||
-- h - [H]istory
|
||||
-- l - [L]SP
|
||||
-- n - [N]otifications
|
||||
-- p - [P]anes
|
||||
-- s - [S]ession
|
||||
-- t - [T]abs
|
||||
-- u - [U]i
|
||||
|
||||
-- [C]lear highlits
|
||||
keymap.set("n", "<leader>ch", ":nohl<CR>", { desc = "[C]lear: serch [h]ighlights" })
|
||||
|
||||
-- [D]iagnostic
|
||||
keymap.set("n", "<leader>dl", vim.diagnostic.open_float, { desc = "[D]iagnostic: [l]ine" })
|
||||
keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover Documentation" })
|
||||
keymap.set({ "n", "v" }, "<leader>da", vim.lsp.buf.code_action, { desc = "[D]iagnostic: avalible code [a]ctions" })
|
||||
-- nvim-telescope/telescope.nvim
|
||||
keymap.set("n", "<leader>db", "<cmd>Telescope diagnostics bufnr=0<CR>", { desc = "[D]iagnostic: [b]uffer" })
|
||||
-- folke/trouble.nvim
|
||||
keymap.set("n", "<leader>dw", "<cmd>Trouble diagnostics toggle<CR>", { desc = "[D]iagnostic: Trouble [w]orkspace" })
|
||||
keymap.set("n", "<leader>dc", "<cmd>Trouble diagnostics toggle filter.buf=0<CR>", { desc = "[D]iagnostic: Trouble do[c]ument" })
|
||||
keymap.set("n", "<leader>dq", "<cmd>Trouble quickfix toggle<CR>", { desc = "[D]iagnostic: Trouble [q]uickfix" })
|
||||
|
||||
-- File [E]xplorer
|
||||
-- nvim-tree/nvim-tree.lua
|
||||
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "File [E]xplorer: Toggle file [e]xplorer" })
|
||||
keymap.set("n", "<leader>ef", "<cmd>NvimTreeFindFileToggle<CR>", { desc = "File [E]xplorer: Toggle file explorer on current [f]ile" })
|
||||
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "File [E]xplorer: [C]ollapse" })
|
||||
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "File [E]xplorer: [R]efresh" })
|
||||
|
||||
-- [F]ind
|
||||
-- nvim-telescope/telescope.nvim
|
||||
keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "[F]ind: [f]iles in cwd" })
|
||||
keymap.set("n", "<leader>fr", "<cmd>Telescope oldfiles<cr>", { desc = "[F]ind: [r]ecent files" })
|
||||
keymap.set("n", "<leader>fs", "<cmd>Telescope live_grep<cr>", { desc = "[F]ind: string in cwd" })
|
||||
keymap.set("n", "<leader>fc", "<cmd>Telescope grep_string<cr>", { desc = "[F]ind: string under [c]ursor in cwd" })
|
||||
-- folke/todo-comments.nvim
|
||||
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "[F]ind: [t]odos" })
|
||||
-- folke/snacks.nvim
|
||||
keymap.set("n", "<leader>fq", function() Snacks.picker.qflist() end, { desc = "[F]ind: [Q]uickfix list" })
|
||||
|
||||
-- [G]it
|
||||
-- lewis6991/gitsigns.nvim
|
||||
keymap.set("n", "<leader>gs", "<cmd>Gitsigns stage_buffer<CR>", { desc = "[G]it: [s]tage buffer" })
|
||||
keymap.set("n", "<leader>gr", "<cmd>Gitsigns reset_buffer<CR>", { desc = "[G]it: [r]eset buffer" })
|
||||
keymap.set("n", "<leader>gb", "<cmd>Gitsigns blame_line<CR>", { desc = "[G]it: [b]lame line" })
|
||||
keymap.set("n", "<leader>gd", "<cmd>Gitsigns diffthis<CR>", { desc = "[G]it: [d]iff this" })
|
||||
keymap.set("n", "<leader>ghn", "<cmd>Gitsigns nav_hunk next<CR>", { desc = "[G]it [H]unk: [n]ext" })
|
||||
keymap.set("n", "<leader>ghp", "<cmd>Gitsigns nav_hunk prev<CR>", { desc = "[G]it [H]unk: [p]revious" })
|
||||
keymap.set("n", "<leader>ghs", "<cmd>Gitsigns stage_hunk<CR>", { desc = "[G]it [H]unk: [s]tage" })
|
||||
keymap.set("n", "<leader>ghr", "<cmd>Gitsigns reset_hunk<CR>", { desc = "[G]it [H]unk: [r]eset" })
|
||||
keymap.set("n", "<leader>ghv", "<cmd>Gitsigns preview_hunk<CR>", { desc = "[G]it [H]unk: pre[v]iew" })
|
||||
keymap.set("v", "<leader>ghs", function() require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [s]tage" })
|
||||
keymap.set("v", "<leader>ghr", function() require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [r]eset" })
|
||||
keymap.set({ "o", "x" }, "<leader>gh", "<cmd>Gitsigns select_hunk<CR>", { desc = "[G]it [H]unk: select" })
|
||||
|
||||
-- [H]istory
|
||||
-- folke/snacks.nvim
|
||||
keymap.set("n", "<leader>hn", function() Snacks.picker.notifications() end, { desc = "[H]istory: [N]otifications" } )
|
||||
keymap.set("n", "<leader>hc", function() Snacks.picker.command_history() end, { desc = "[H]istory: [C]ommands" } )
|
||||
|
||||
-- [L]SP
|
||||
-- folke/snacks.nvim
|
||||
keymap.set("n", "<leader>lf", function() Snacks.picker.lsp_definitions() end, { desc = "[L]SP: Goto De[f]initions" })
|
||||
keymap.set("n", "<leader>lc", function() Snacks.picker.lsp_declarations() end, { desc = "[L]SP: Goto De[c]larations" })
|
||||
keymap.set("n", "<leader>le", function() Snacks.picker.lsp_references() end, { desc = "[L]SP: Goto R[e]ferences" })
|
||||
keymap.set("n", "<leader>li", function() Snacks.picker.lsp_implementations() end, { desc = "[L]SP: Goto [I]mplementations" })
|
||||
keymap.set("n", "<leader>ly", function() Snacks.picker.lsp_type_definitions() end, { desc = "[L]SP: Goto T[y]pe Definitions" })
|
||||
|
||||
-- [P]anes
|
||||
keymap.set("n", "<leader>pv", "<C-w>v", { desc = "[P]ane: split [v]ertically" })
|
||||
keymap.set("n", "<leader>ph", "<C-w>s", { desc = "[P]ane: split [h]orizontally" })
|
||||
keymap.set("n", "<leader>pe", "<C-w>=", { desc = "[P]ane: Make splits [e]qual size" })
|
||||
keymap.set("n", "<leader>pc", "<cmd>close<CR>", { desc = "[P]ane: [C]lose current split" })
|
||||
-- szw/vim-maximizer
|
||||
keymap.set("n", "<leader>pm", "<cmd>MaximizerToggle<CR>", { desc = "[P]ane: [M]aximize/minimize current split" })
|
||||
|
||||
-- [S]ession
|
||||
-- rmagatti/auto-session
|
||||
keymap.set("n", "<leader>sr", "<cmd>AutoSession restore<CR>", { desc = "[S]ession: [R]estore" })
|
||||
keymap.set("n", "<leader>ss", "<cmd>AutoSession save<CR>", { desc = "[S]ession: [S]ave" })
|
||||
keymap.set("n", "<leader>sf", "<cmd>AutoSession search<CR>", { desc = "[S]ession: [F]ind" })
|
||||
keymap.set("n", "<leader>sd", "<cmd>AutoSession deletePicker<CR>", { desc = "[S]ession: [D]elete" })
|
||||
|
||||
-- [T]abs
|
||||
keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "[T]ab: Open new" })
|
||||
keymap.set("n", "<leader>tc", "<cmd>tabclose<CR>", { desc = "[T]ab: [C]lose current" })
|
||||
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "[T]ab: Go to [n]ext" })
|
||||
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "[T]ab: Go to [p]revious" })
|
||||
keymap.set("n", "<leader>tb", "<cmd>tabnew %<CR>", { desc = "[T]ab: Open current buffer in new tab" })
|
||||
|
||||
-- [U]I
|
||||
-- folke/snacks.nvim
|
||||
keymap.set("n", "<leader>ug", function() Snacks.lazygit() end, { desc = "[U]I: Open [L]azyGit" })
|
||||
keymap.set("n", "<leader>ud", function() Snacks.dashboard() end, { desc = "[U]I: Open [D]ashboard" })
|
||||
-- folke/lazy.nvim
|
||||
keymap.set("n", "<leader>ul", "<cmd>Lazy<CR>", { desc = "[U]I: Open [L]azyVim" })
|
||||
|
||||
-- Misc
|
||||
-- VonHeikemen/fine-cmdline.nvim
|
||||
keymap.set("n", ":", "<cmd>FineCmdline<CR>", { desc = "Fine Command Line" })
|
||||
-- folke/which-key.nvim
|
||||
keymap.set("n", "<leader>?", function() require("which-key").show({ global = false }) end, { desc = "Buffer Local Keymaps (which-key)" })
|
||||
Reference in New Issue
Block a user