# MIT License # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. if not vim then return end -- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` -- Clear highlights on search when pressing in normal mode -- See `:help hlsearch` vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps vim.keymap.set('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 -- is not what someone will guess without a bit more experience. -- -- 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' }) -- 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!!"') -- 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' }) -- [[ JMB Begin ]] -- Save all buffer vim.keymap.set('n', 'wa', ':wall', { noremap = true, desc = '[W]rite [A]ll' }) vim.keymap.set('n', 'wf', ':w', { noremap = true, desc = '[W]rite [F]ile' }) -- Create command do save with qw vim.api.nvim_command('cmap qw wq') vim.api.nvim_command('cmap WQ wq') vim.api.nvim_command('cmap QW wq') -- Navigate buffers vim.keymap.set('n', '', ':bp', { noremap = true, desc = '[G]oto [P]revious Buffer' }) vim.keymap.set('n', '', ':bn', { noremap = true, desc = '[G]oto [N]ext Buffer' }) -- terraform configuration local opts = { noremap = true, silent = true } vim.keymap.set('n', 'ti', ':!make init', opts) vim.keymap.set('n', 'tv', ':!make validate', opts) vim.keymap.set('n', 'tp', ':!make plan', opts) vim.keymap.set('n', 'taa', ':!make applyA', opts) -- [[ JMB End ]] -- Better copy-paste between vim and system clipboard vim.api.nvim_set_keymap('v', '', '"+y', { noremap = true, silent = true, desc = 'Copy to system clipboard' }) vim.api.nvim_set_keymap('n', '', '"+p', { noremap = true, silent = true, desc = 'Paste from system clipboard' }) vim.api.nvim_set_keymap( 'i', '', '+', { noremap = true, silent = true, desc = 'Paste from system clipboard in insert mode' } )