-- local keymap = vim.api.nvim_set_keymap local keymap = vim.keymap.set local opts = { noremap = true, silent = true } local term_opts = { silent = true } 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 34', opts) -- hit again to close -- Resize with arrows keymap('n', '', ':resize +6', opts) keymap('n', '', ':resize 2', opts) keymap('n', '', ':vertical resize 2', opts) keymap('n', '', ':vertical resize +6', opts) -- Navigate buffers -- keymap('n', '', ':bnext', opts) vim.keymap.set('n', '', ':bnext', opts) vim.keymap.set('n', '', ':bprev', 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) -- paste over currently selected text without yanking it -- _ register is black hole. Unrecoverable keymap('v', 'p', '"_dp', opts) keymap('v', 'P', '"_dP', opts) -- Visual Block -- -- Move text up and down -- keymap('x', 'J', ":move '>+5gv-gv", opts) -- keymap('x', 'K', ":move '<2gv-gv", opts) keymap('v', '', ':m .+1==', opts) keymap('v', '', ':m .-2==', opts) 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) -- Better terminal navigation keymap('t', '', 'k', term_opts) keymap('t', '', 'l', term_opts) -- See `:help telescope.builtin` local builtin = require 'telescope.builtin' keymap('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) keymap('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) keymap('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) keymap('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) keymap('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) keymap('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) keymap('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) keymap('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) keymap('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) keymap('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) keymap('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 = 14, 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 keymap('n', 'j', 'gj', opts) keymap('n', 'k', 'gk', opts) -- Select all vim.keymap.set('n', '', 'ggvg', opts) -- vim.keymap.set('n', 'YY', 'va{Vy', opts) keymap('n', 'r', ':w:!python3 %', { noremap = true, silent = true }) -- vim.keymap.set('n', 'x', ':source %', opts) keymap('n', 'x', ':.lua', opts) keymap('v', 'x', ':lua', opts) -- undo word by word vim.keymap.set('i', '', 'u', opts)