diff --git a/init.lua b/init.lua index 013fcc29..bbfbfc8a 100644 --- a/init.lua +++ b/init.lua @@ -83,6 +83,10 @@ I hope you enjoy your Neovim journey, P.S. You can delete this when you're done too. It's your config now! :) --]] +-- +local opts = { noremap = true, silent = true } +-- Shorten function name +local keymap = vim.keymap.set -- Set as the leader key -- See `:help mapleader` @@ -91,7 +95,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.opt` @@ -159,13 +163,13 @@ vim.opt.scrolloff = 10 -- Set highlight on search, but clear on pressing in normal mode vim.opt.hlsearch = true -vim.keymap.set('n', '', 'nohlsearch') +keymap('n', '', 'nohlsearch') -- Diagnostic keymaps -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' }) -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) +keymap('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' }) +keymap('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' }) +keymap('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) +keymap('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier -- for people to discover. Otherwise, you normally need to press , which @@ -173,22 +177,59 @@ vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagn -- -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping -- or just use to exit terminal mode -vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) +keymap('t', '', '', { desc = 'Exit terminal mode' }) -- TIP: Disable arrow keys in normal mode --- vim.keymap.set('n', '', 'echo "Use h to move!!"') --- vim.keymap.set('n', '', 'echo "Use l to move!!"') --- vim.keymap.set('n', '', 'echo "Use k to move!!"') --- vim.keymap.set('n', '', 'echo "Use j to move!!"') +-- keymap('n', '', 'echo "Use h to move!!"') +-- keymap('n', '', 'echo "Use l to move!!"') +-- keymap('n', '', 'echo "Use k to move!!"') +-- keymap('n', '', 'echo "Use j to move!!"') +-- +-- 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', '', ':bprevious', opts) +keymap('n', 'c', ':bd', opts) + +-- Move text up and down +keymap('n', '', ':m .+1==', opts) +keymap('n', '', ':m .-2==', opts) + +-- Insert -- +-- Press jk fast to exit insert mode +keymap('i', 'jk', '', opts) +keymap('i', 'kj', '', opts) + +-- Visual -- +-- Stay in indent mode +keymap('v', '<', '', '>gv^', opts) + +-- Move text up and down +keymap('v', '', ":m '>+1gv=gv", opts) +keymap('v', '', ":m '<-2gv=gv", opts) +keymap('v', 'p', '"_dP', opts) + +-- Visual Block -- +-- Move text up and down +keymap('x', 'J', ":m '>+1gv=gv", opts) +keymap('x', 'K', ":m '<-2gv=gv", opts) +keymap('x', '', ":m '>+1gv=gv", opts) +keymap('x', '', ":m '<-2gv=gv", opts) -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands -vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) +keymap('n', '', '', { desc = 'Move focus to the left window' }) +keymap('n', '', '', { desc = 'Move focus to the right window' }) +keymap('n', '', '', { desc = 'Move focus to the lower window' }) +keymap('n', '', '', { desc = 'Move focus to the upper window' }) -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` @@ -366,19 +407,19 @@ require('lazy').setup({ -- 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' }) + keymap('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) + keymap('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) + keymap('n', 'f', 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', 'F', 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' }) -- Slightly advanced example of overriding default behavior and theme - vim.keymap.set('n', '/', function() + 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 = 10, @@ -388,7 +429,7 @@ require('lazy').setup({ -- 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() + keymap('n', 's/', function() builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files', @@ -396,7 +437,7 @@ require('lazy').setup({ end, { desc = '[S]earch [/] in Open Files' }) -- Shortcut for searching your Neovim configuration files - vim.keymap.set('n', 'sn', function() + keymap('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) end, @@ -457,7 +498,7 @@ require('lazy').setup({ -- In this case, we create a function that lets us more easily define mappings specific -- for LSP related items. It sets the mode, buffer and description for us each time. local map = function(keys, func, desc) - vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) + keymap('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) end -- Jump to the definition of the word under your cursor.