local opts = { noremap = true, silent = true } local term_opts = { silent = true } -- Shorten function name local keymap = vim.api.nvim_set_keymap --Remap space as leader key keymap('', '', '', opts) vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Modes -- normal_mode = "n", -- insert_mode = "i", -- visual_mode = "v", -- visual_block_mode = "x", -- term_mode = "t", -- command_mode = "c", -- Normal -- -- Better window navigation keymap('n', '', 'h', opts) keymap('n', '', 'j', opts) keymap('n', '', 'k', opts) keymap('n', '', 'l', opts) keymap('n', 'e', ':Lex 30', opts) -- hit again to close -- Resize with arrows keymap('n', '', ':resize +2', opts) keymap('n', '', ':resize -2', opts) keymap('n', '', ':vertical resize -2', opts) keymap('n', '', ':vertical resize +2', opts) -- Navigate buffers keymap('n', '', ':bnext', opts) keymap("n", "n", ":bnext", opts) keymap('n', '', ':bprevious', opts) keymap("n", "p", ":bprev", opts) -- Insert -- -- Press fast to exit keymap('i', 'jk', '', opts) -- Jump to beginning of line keymap('n', 'h', '^', opts) -- Visual -- -- Stay in indent mode keymap('v', '<', '', '>gv', opts) -- Move text up and down keymap('v', '', ':m .+1==', opts) keymap('v', '', ':m .-2==', opts) -- paste over currently selected text without yanking it keymap('v', 'p', '"_dp', opts) keymap('v', 'P', '"_dP', opts) -- Visual Block -- -- Move text up and down keymap('x', 'J', ":move '>+1gv-gv", opts) keymap('x', 'K', ":move '<-2gv-gv", opts) keymap('x', '', ":move '>+1gv-gv", opts) keymap('x', '', ":move '<-2gv-gv", opts) -- Terminal -- -- Better terminal navigation keymap('t', '', 'h', term_opts) keymap('t', '', 'j', term_opts) keymap('t', '', 'k', term_opts) keymap('t', '', 'l', term_opts) -- keymap("n", "f", "Telescope find_files", opts) keymap("n", "f", "lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ previewer = false }))", opts) keymap("n", "", "Telescope live_grep", opts) -- -- See `:help telescope.builtin` local builtin = require 'telescope.builtin' vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) vim.keymap.set('n', '/', function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) end, { desc = '[/] Fuzzily search in current buffer' }) -- It's also possible to pass additional configuration options. -- See `:help telescope.builtin.live_grep()` for information about particular keys -- vim.keymap.set('n', 's/', function() -- builtin.live_grep { -- grep_open_files = true, -- prompt_title = 'Live Grep in Open Files', -- } -- end, { desc = '[S]earch [/] in Open Files' }) -- Shortcut for searching your Neovim configuration files vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) -- Nvimtree keymap("n", "e", ":NvimTreeToggle", opts) -- keymap("n", "f", ":Format", opts) keymap("n", "w", ":w", opts) keymap("n", "q", ":q", opts) keymap("n", "d", ":bdelete", opts) keymap("n", "", "zz", opts) keymap("n", "", "zz", opts) -- Move line on the screen rather than by line in the file vim.keymap.set("n", "j", "gj", opts) vim.keymap.set("n", "k", "gk", opts) -- Select all vim.keymap.set("n", "", "ggVG", opts) vim.keymap.set("n", "YY", "va{Vy", opts) vim.keymap.set("n", "r", ":w:!python3 %", { noremap = true, silent = true })