diff --git a/lua/aquila/core/keymaps.lua b/lua/aquila/core/keymaps.lua index 826e720..3ae05fc 100644 --- a/lua/aquila/core/keymaps.lua +++ b/lua/aquila/core/keymaps.lua @@ -2,18 +2,25 @@ local set = function(mode, map, mapped, opts) vim.keymap.set(mode, map, mapped, opts) end -set("i", "jj", "", { noremap = true, silent = true }) -- the important things you should remap +set("i", "jj", "", { noremap = true, silent = true }) +-- i love windows behavior for saving a file +set({ 'i', 'n' }, "", 'w') -set({ 'i', 'n' }, "", 'w') -- i love windows behavior for save a file +-- fix problem when below keymap will exit neovim +set({ 'n', 'v', 'i' }, '', '') +set('n', '', '') -set({ 'n', 'v', 'i' }, '', '') -- fix problem when CTRL + Z is exit neovim -set('n', '', '') -- fix probelm when CTRL + C in normal mode is exit neovim - --- same behavior like alt + up/down in vscode --- the selected line will move one line up/down -set("v", "J", ":m '>+1gv=gv") -set("v", "K", ":m '<-2gv=gv") +-- the selected line will move one line up/down and keep the selection +-- set("v", "J", ":m '>+1gv=gv") +-- set("v", "K", ":m '<-2gv=gv") +-- the current line under cursor will move one line up/down +vim.keymap.set("n", "k", ":m .-2==gv", { + desc = "Move current line up", +}) +vim.keymap.set("n", "j", ":m .+1==gv", { + desc = "Move current line down", +}) -- pressing `n/N` for the next/prev matches in search mode, will make the matches line center set("n", "n", "nzzzv") set("n", "N", "Nzzzv") @@ -33,37 +40,34 @@ set("n", "~", 'Alpha', { desc = "Take me home to the place i be set("n", "H", "h", { noremap = true, silent = true }) set("n", "L", "l", { noremap = true, silent = true }) --- Neotree -set("n", "e", 'Neotree toggle') -set("n", "E", 'Neotree reveal') - --- dd without copy to register if line is empty set("n", "dd", function() - if vim.fn.getline("."):match("^%s*$") then - return '"_dd' - end - return "dd" - end, - { expr = true } -) + if vim.fn.getline("."):match("^%s*$") then + return '"_dd' + end + return "dd" +end, { + expr = true, + desc = "Delete line without copy to register if line is empty" +}) -- DUPLICATE VISUAL SELECTION local duplicate_selection = function() local save_reg = vim.fn.getreginfo([["]]) - local visual_mode = vim.fn.mode() - if visual_mode == "v" or visual_mode == "V" then + local mode = vim.fn.mode() + if mode == "v" or mode == "V" then vim.fn.execute [[noautocmd normal! y`>p]] - else - vim.fn.execute [[noautocmd normal! yP]] + elseif mode == "n" then + vim.fn.execute [[noautocmd normal! yyP]] + -- vim.fn.execute [[noautocmd normal! yyPgvy`[v`]=]] end vim.fn.setreg([["]], save_reg.regcontents, save_reg.regtype) end -set('v', '', duplicate_selection, { desc = 'Duplicate selection' }) +set({ 'n', 'v' }, '', duplicate_selection, { desc = 'Duplicate selection' }) set('v', '', function() - duplicate_selection() - vim.fn.execute [[noautocmd normal! gv]] - end, - { desc = 'Duplicate selection (keep selection)' } -) + duplicate_selection() + vim.fn.execute [[noautocmd normal! gv]] +end, { + desc = 'Duplicate selection (keep selection)' +})