-- Set leader key to space vim.g.mapleader = " " local keymap = vim.keymap -- General keymaps keymap.set("n", "wq", ":wq") -- save and quit keymap.set("n", "qq", ":q!") -- quit without saving keymap.set("n", "ww", ":w") -- save keymap.set("n", "gx", ":!open ") -- open URL under cursor -- Split window management keymap.set("n", "sv", "v") -- split window vertically keymap.set("n", "sh", "s") -- split window horizontally keymap.set("n", "se", "=") -- make split windows equal width keymap.set("n", "sx", ":close") -- close split window keymap.set("n", "sj", "-") -- make split window height shorter keymap.set("n", "sk", "+") -- make split windows height taller keymap.set("n", "sl", ">5") -- make split windows width bigger keymap.set("n", "sh", "<5") -- make split windows width smaller -- Tab management keymap.set("n", "to", ":tabnew") -- open a new tab keymap.set("n", "tx", ":tabclose") -- close a tab keymap.set("n", "tn", ":tabn") -- next tab keymap.set("n", "tp", ":tabp") -- previous tab -- Diff keymaps keymap.set("n", "cc", ":diffput") -- put diff from current to other during diff keymap.set("n", "cj", ":diffget 1") -- get diff from left (local) during merge keymap.set("n", "ck", ":diffget 3") -- get diff from right (remote) during merge keymap.set("n", "cn", "]c") -- next diff hunk keymap.set("n", "cp", "[c") -- previous diff hunk -- Quickfix keymaps keymap.set("n", "qo", ":copen") -- open quickfix list keymap.set("n", "qf", ":cfirst") -- jump to first quickfix list item keymap.set("n", "qn", ":cnext") -- jump to next quickfix list item keymap.set("n", "qp", ":cprev") -- jump to prev quickfix list item keymap.set("n", "ql", ":clast") -- jump to last quickfix list item keymap.set("n", "qc", ":cclose") -- close quickfix list -- Vim-maximizer keymap.set("n", "sm", ":MaximizerToggle") -- toggle maximize tab -- Nvim-tree keymap.set("n", "ee", ":NvimTreeToggle") -- toggle file explorer keymap.set("n", "er", ":NvimTreeFocus") -- toggle focus to file explorer keymap.set("n", "ef", ":NvimTreeFindFile") -- find file in file explorer -- Telescope keymap.set('n', 'ff', require('telescope.builtin').find_files, {}) -- fuzzy find files in project keymap.set('n', 'fg', require('telescope.builtin').live_grep, {}) -- grep file contents in project keymap.set('n', 'fb', require('telescope.builtin').buffers, {}) -- fuzzy find open buffers keymap.set('n', 'fh', require('telescope.builtin').help_tags, {}) -- fuzzy find help tags keymap.set('n', 'fs', require('telescope.builtin').current_buffer_fuzzy_find, {}) -- fuzzy find in current file buffer keymap.set('n', 'fo', require('telescope.builtin').lsp_document_symbols, {}) -- fuzzy find LSP/class symbols keymap.set('n', 'fi', require('telescope.builtin').lsp_incoming_calls, {}) -- fuzzy find LSP/incoming calls -- keymap.set('n', 'fm', function() require('telescope.builtin').treesitter({default_text=":method:"}) end) -- fuzzy find methods in current class keymap.set('n', 'fm', function() require('telescope.builtin').treesitter({symbols={'function', 'method'}}) end) -- fuzzy find methods in current class keymap.set('n', 'ft', function() -- grep file contents in current nvim-tree node local success, node = pcall(function() return require('nvim-tree.lib').get_node_at_cursor() end) if not success or not node then return end; require('telescope.builtin').live_grep({search_dirs = {node.absolute_path}}) end) -- Git-blame keymap.set("n", "gb", ":GitBlameToggle") -- toggle git blame -- Harpoon keymap.set("n", "ha", require("harpoon.mark").add_file) keymap.set("n", "hh", require("harpoon.ui").toggle_quick_menu) keymap.set("n", "h1", function() require("harpoon.ui").nav_file(1) end) keymap.set("n", "h2", function() require("harpoon.ui").nav_file(2) end) keymap.set("n", "h3", function() require("harpoon.ui").nav_file(3) end) keymap.set("n", "h4", function() require("harpoon.ui").nav_file(4) end) keymap.set("n", "h5", function() require("harpoon.ui").nav_file(5) end) keymap.set("n", "h6", function() require("harpoon.ui").nav_file(6) end) keymap.set("n", "h7", function() require("harpoon.ui").nav_file(7) end) keymap.set("n", "h8", function() require("harpoon.ui").nav_file(8) end) keymap.set("n", "h9", function() require("harpoon.ui").nav_file(9) end) -- Vim REST Console keymap.set("n", "xr", ":call VrcQuery()") -- Run REST query -- LSP keymap.set('n', 'gg', 'lua vim.lsp.buf.hover()') keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()') keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()') keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()') keymap.set('n', 'gt', 'lua vim.lsp.buf.type_definition()') keymap.set('n', 'gr', 'lua vim.lsp.buf.references()') keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()') keymap.set('n', 'rr', 'lua vim.lsp.buf.rename()') keymap.set('n', 'gf', 'lua vim.lsp.buf.format({async = true})') keymap.set('v', 'gf', 'lua vim.lsp.buf.format({async = true})') keymap.set('n', 'ga', 'lua vim.lsp.buf.code_action()') keymap.set('n', 'gl', 'lua vim.diagnostic.open_float()') keymap.set('n', 'gp', 'lua vim.diagnostic.goto_prev()') keymap.set('n', 'gn', 'lua vim.diagnostic.goto_next()') keymap.set('n', 'tr', 'lua vim.lsp.buf.document_symbol()') keymap.set('i', '', 'lua vim.lsp.buf.completion()') -- Filetype-specific keymaps (these can be done in the ftplugin directory instead if you prefer) keymap.set("n", 'go', function() if vim.bo.filetype == 'python' then vim.api.nvim_command('PyrightOrganizeImports') end end) keymap.set("n", 'tc', function() if vim.bo.filetype == 'python' then require('dap-python').test_class(); end end) keymap.set("n", 'tm', function() if vim.bo.filetype == 'python' then require('dap-python').test_method(); end end) -- Debugging keymap.set("n", "bb", "lua require'dap'.toggle_breakpoint()") keymap.set("n", "bc", "lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))") keymap.set("n", "bl", "lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))") keymap.set("n", 'br', "lua require'dap'.clear_breakpoints()") keymap.set("n", 'ba', 'Telescope dap list_breakpoints') keymap.set("n", "dc", "lua require'dap'.continue()") keymap.set("n", "dj", "lua require'dap'.step_over()") keymap.set("n", "dk", "lua require'dap'.step_into()") keymap.set("n", "do", "lua require'dap'.step_out()") keymap.set("n", 'dd', function() require('dap').disconnect(); require('dapui').close(); end) keymap.set("n", 'dt', function() require('dap').terminate(); require('dapui').close(); end) keymap.set("n", "dr", "lua require'dap'.repl.toggle()") keymap.set("n", "dl", "lua require'dap'.run_last()") keymap.set("n", 'di', function() require "dap.ui.widgets".hover() end) keymap.set("n", 'd?', function() local widgets = require "dap.ui.widgets"; widgets.centered_float(widgets.scopes) end) keymap.set("n", 'df', 'Telescope dap frames') keymap.set("n", 'dh', 'Telescope dap commands') keymap.set("n", 'de', function() require('telescope.builtin').diagnostics({default_text=":E:"}) end)