local buffers = require('user.utils.buffers') local telescope = require('user.utils.telescope') ---@diagnostic disable-next-line: inject-field vim.g.mapleader = ' ' -- NOPE vim.keymap.set('n', 'Q', '') -- -- Editing -- vim.keymap.set("n", "W", "lua vim.opt.list = not vim.opt.list._value", { silent = true, desc = "Toggle show whitespace" }) vim.keymap.set({ 'n', 'i' }, '', vim.cmd.w, { desc = 'Save current buffer' }) -- Indent vim.keymap.set('n', '', '^=$') vim.keymap.set('x', '', '=', { desc = 'auto indent selection' }) vim.keymap.set('i', '', { desc = 'delete indent' }) -- -- Editing - formatting -- vim.keymap.set('n', 'fs', [[:%s/\s\+$//g`']], { desc = 'Remove trailing spaces' }) vim.keymap.set('n', 'ff', [[:Format]], { desc = 'Format file', silent = true, }) -- Hex Formatting vim.keymap.set('x', 'fhx', [[:s/\(\x\{2\}\)/0x\1, /g]], { desc = "Format hex" }) vim.keymap.set('x', 'fha', [[:s/0x\(\x\{1\}\X\)/0x0\1/g]], { desc = "Format hex" }) vim.keymap.set('x', 'fhn', [[:s/\(\(0x\x\{1,2\}, \)\{8\}\)/\1\r/g]], { desc = "Format hex" }) -- Case formatting vim.keymap.set("x", "fcsc", [[:s/\%V\([a-z]\+\)_\?/\u\1/g]], { desc = "Convert text from snake_case to CamelCase" }) -- copy/paste vim.keymap.set({ 'n', 'v' }, 'y', [["+y]], {}) vim.keymap.set({ 'n', 'v' }, 'p', [["+p]], {}) vim.keymap.set('x', 'p', [["_dP]], { silent = true }) -- -- Navigation -- -- Move text vim.keymap.set('n', '', [[:m -2v=]], { silent = true, desc = 'move current line one line up' }) vim.keymap.set('n', '', [[:m +1v=]], { silent = true, desc = 'move current line one line down' }) vim.keymap.set('v', '', [[:m '<-2gv=gv]], { silent = true, desc = 'move current selection one line up' }) vim.keymap.set('v', '', [[:m '>+1gv=gv]], { silent = true, desc = 'move current selection one line down' }) -- Make half page jumps stay in the center of screen vim.keymap.set('n', '', 'zz', { silent = true, desc = 'jump half a page up' }) vim.keymap.set('n', '', 'zz', { silent = true, desc = 'jump half a page down' }) vim.keymap.set('n', '', 'zz', { silent = true, desc = 'jump half a page up' }) vim.keymap.set('n', '', 'zz', { silent = true, desc = 'jump half a page down' }) -- -- Buffers -- -- vim.keymap.set('n', 'bn', vim.cmd.bn, { silent = true, desc = 'Move to next buffer' }) -- vim.keymap.set('n', 'bb', vim.cmd.bp, { silent = true, desc = 'Move to previous buffer' }) -- vim.keymap.set('n', 'bd', vim.cmd.bd, { silent = true, desc = 'Close current buffer' }) -- vim.keymap.set('n', 'bd', 'bp | bd #', { silent = true, desc = 'Close current buffer' }) vim.keymap.set('n', 'bd', buffers.CloseCurrent, { silent = true, desc = 'Close current buffer' }) vim.keymap.set('n', 'bc', buffers.CloseOthers, { silent = true, desc = 'Close all other buffers' }) vim.keymap.set('n', 'bD', buffers.CloseAll, { silent = true, desc = 'Close all buffers' }) -- -- Diagnostics -- vim.keymap.set('n', "dk", vim.diagnostic.open_float, { desc = "Show diagnostic message under cursor" }) vim.keymap.set('n', "dn", vim.diagnostic.get_next, { desc = "Goto next" }) vim.keymap.set('n', "dp", vim.diagnostic.get_prev, { desc = "Goto previous" }) vim.keymap.set('n', "dd", "Telescope diagnostics", { desc = "Open workspace diagnostics" }) -- -- File explorer -- vim.keymap.set('n', ".", "Neotree toggle", { desc = "Toggle Neotree" }) -- -- Git -- vim.keymap.set('n', "gp", "Gitsigns preview_hunk", { desc = "Preview section at cursor" }) vim.keymap.set('n', "gr", "Gitsigns reset_hunk", { desc = "Reset section at cursor" }) vim.keymap.set('n', "gR", "Gitsigns reset_buffer", { desc = "Reset buffer" }) vim.keymap.set('n', "gv", "Gitsigns select_hunk", { desc = "Select section under cursor" }) -- -- LSP -- vim.keymap.set('n', 'go', 'Telescope lsp_type_definitions', { desc = 'Goto type definition' }) vim.keymap.set('n', 'gd', 'Telescope lsp_definitions', { desc = 'Goto definition' }) vim.keymap.set({ 'n', 'x' }, 'ca', 'lua vim.lsp.buf.code_action()', { desc = 'Code action' }) vim.keymap.set('n', 'rs', 'lua vim.lsp.buf.rename()', { desc = 'Rename symbol' }) -- -- Search -- vim.keymap.set('n', 'sf', 'Telescope find_files', { desc = 'Search files' }) vim.keymap.set('n', 'sF', telescope.all_files, { desc = 'Search all files' }) vim.keymap.set('n', 'sw', 'Telescope grep_string', { desc = 'Search for word under cursor' }) vim.keymap.set('n', 'sa', 'Telescope live_grep', { desc = 'Search in files' }) vim.keymap.set('n', 'sb', 'Telescope buffers', { desc = 'Search Buffers' }) vim.keymap.set('n', 'sg', 'Telescope git_files', { desc = 'Search Git files' }) vim.keymap.set('n', 'sG', 'Telescope git_status', { desc = 'Search Git status' }) vim.keymap.set('n', 'sc', 'Telescope git_commits', { desc = 'Search Git commits' }) vim.keymap.set('n', 'so', 'Telescope oldfiles', { desc = 'Search old files' }) vim.keymap.set('n', 'sd', 'Telescope diagnostics', { desc = 'Search Diagnostics' }) vim.keymap.set('n', 'sq', 'Telescope quickfix', { desc = 'Search Quickfix' }) vim.keymap.set('n', 'sr', 'Telescope lsp_references', { desc = 'Search Reference' }) vim.keymap.set('n', 'ss', 'Telescope lsp_document_symbols', { desc = 'Search document symbols' }) vim.keymap.set('n', 'si', 'Telescope lsp_implementations', { desc = 'Search Inplementations' }) vim.keymap.set('n', 'sp', 'Telescope lsp_workspace_symbols', { desc = 'Search Workspace symbols' }) vim.keymap.set('n', 'sh', 'Telescope help', { desc = 'Search Neovim help' })