feat: add custom key mappings for visual mode text block movements
This commit is contained in:
+6
-36
@@ -14,13 +14,6 @@ local data = require("data")
|
|||||||
|
|
||||||
-- Add keymapper function
|
-- Add keymapper function
|
||||||
local add_keymap = data.func.add_keymap
|
local add_keymap = data.func.add_keymap
|
||||||
-- local add_km = require("which-key").add
|
|
||||||
|
|
||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━ General Keybinds ━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
-- Add keymaps for miscellaneous keybinds
|
|
||||||
for _, item in ipairs(data.keys.misc) do
|
|
||||||
add_keymap(item)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Group Keybinds ━━━━━━━━━━━━━━━━━━━━━━━━
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Group Keybinds ━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
-- Add keymaps for menu groups
|
-- Add keymaps for menu groups
|
||||||
@@ -28,6 +21,12 @@ for _, item in ipairs(data.keys.groups) do
|
|||||||
add_keymap(item)
|
add_keymap(item)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━ General Keybinds ━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
-- Add keymaps for miscellaneous keybinds
|
||||||
|
for _, item in ipairs(data.keys.misc) do
|
||||||
|
add_keymap(item)
|
||||||
|
end
|
||||||
|
|
||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Resizing splits ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Resizing splits ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
-- Add keymaps for resizing splits
|
-- Add keymaps for resizing splits
|
||||||
for _, map in ipairs(data.keys.splits.resize) do
|
for _, map in ipairs(data.keys.splits.resize) do
|
||||||
@@ -49,32 +48,3 @@ end
|
|||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Overrides ━━━━━━━━━━━━━━━━━━━━━━━━━━
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Overrides ━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
-- Add keymaps for overrides
|
-- Add keymaps for overrides
|
||||||
add_keymap(data.keys.overrides)
|
add_keymap(data.keys.overrides)
|
||||||
|
|
||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Custom Mappings ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
-- Visual mode: Move selected block of text up
|
|
||||||
add_keymap("K", function()
|
|
||||||
data.func.move_visual(true)
|
|
||||||
end, "Move block of text up", "v")
|
|
||||||
|
|
||||||
-- Visual mode: Move selected block of text down
|
|
||||||
add_keymap("J", function()
|
|
||||||
data.func.move_visual(false)
|
|
||||||
end, "Move block of text down", "v")
|
|
||||||
|
|
||||||
-- Test Prompt: Enter your name
|
|
||||||
add_keymap("<leader>qP", function()
|
|
||||||
data.func.InputPrompt("Enter your name: ", function(input)
|
|
||||||
if input then
|
|
||||||
-- trim whitespace from end of input
|
|
||||||
input = input:gsub("%s+$", "")
|
|
||||||
print("👋😎 Hello " .. input .. "!")
|
|
||||||
else
|
|
||||||
print("Input was canceled")
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end, "Test Prompt")
|
|
||||||
|
|
||||||
-- Paste over text with overwrite
|
|
||||||
add_keymap("<leader>cp", function()
|
|
||||||
data.func.paste_overwrite()
|
|
||||||
end, "Paste overwrite", "n")
|
|
||||||
|
|||||||
@@ -455,6 +455,8 @@ function M.move_visual(up, multiplier)
|
|||||||
vim.cmd("norm gv")
|
vim.cmd("norm gv")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@function Function to paste over text with overwrite
|
||||||
|
---@return nil
|
||||||
function M.paste_overwrite()
|
function M.paste_overwrite()
|
||||||
-- Get the register contents and type
|
-- Get the register contents and type
|
||||||
local register = vim.fn.getreginfo(vim.v.register or '"')
|
local register = vim.fn.getreginfo(vim.v.register or '"')
|
||||||
@@ -490,6 +492,29 @@ function M.paste_overwrite()
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@function Function to dump the current buffer to a register and format as a Lua table
|
||||||
|
---@param register string? The name of the register to dump the buffer to (defaults to unnamed register if nil)
|
||||||
|
---@return nil
|
||||||
|
function M.dump_buffer_to_table(register)
|
||||||
|
register = register or "" -- Default to unnamed register if not provided
|
||||||
|
|
||||||
|
-- Get the lines from the current buffer
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
|
||||||
|
|
||||||
|
-- Process the buffer contents
|
||||||
|
local result = {}
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
local entry = line:gsub("%.lua$", "") -- Remove ".lua" extension
|
||||||
|
table.insert(result, '"' .. entry .. '"')
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Join the result into a single string and format as a Lua table
|
||||||
|
local output = "{ " .. table.concat(result, ", ") .. " }"
|
||||||
|
|
||||||
|
-- Dump the result into a register
|
||||||
|
vim.fn.setreg(register, output)
|
||||||
|
end
|
||||||
|
|
||||||
---@function Function to reload the user's Neovim configuration
|
---@function Function to reload the user's Neovim configuration
|
||||||
---@return nil
|
---@return nil
|
||||||
function M.reload_config()
|
function M.reload_config()
|
||||||
|
|||||||
@@ -440,6 +440,59 @@ M.misc = {
|
|||||||
mode = "n",
|
mode = "n",
|
||||||
hidden = true,
|
hidden = true,
|
||||||
},
|
},
|
||||||
|
{ -- Visual mode: Move selected block of text up
|
||||||
|
lhs = "K",
|
||||||
|
rhs = function()
|
||||||
|
require("data.func").move_visual(true)
|
||||||
|
end,
|
||||||
|
desc = "Move block of text up",
|
||||||
|
mode = "v",
|
||||||
|
},
|
||||||
|
{ -- Visual mode: Move selected block of text down
|
||||||
|
lhs = "J",
|
||||||
|
rhs = function()
|
||||||
|
require("data.func").move_visual(false)
|
||||||
|
end,
|
||||||
|
desc = "Move block of text down",
|
||||||
|
mode = "v",
|
||||||
|
},
|
||||||
|
{ -- Test Prompt: Enter your name
|
||||||
|
lhs = "<leader>qP",
|
||||||
|
rhs = function()
|
||||||
|
require("data.func").InputPrompt("Enter your name: ", function(input)
|
||||||
|
if input then
|
||||||
|
-- trim whitespace from end of input
|
||||||
|
input = input:gsub("%s+$", "")
|
||||||
|
print("👋😎 Hello " .. input .. "!")
|
||||||
|
else
|
||||||
|
print("Input was canceled")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
desc = "Test Prompt",
|
||||||
|
},
|
||||||
|
{ -- Paste over text with overwrite
|
||||||
|
lhs = "<leader>cp",
|
||||||
|
rhs = function()
|
||||||
|
require("data.func").paste_overwrite()
|
||||||
|
end,
|
||||||
|
desc = "Paste overwrite",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{ -- Dump buffer contents to a table in register
|
||||||
|
lhs = "<leader>bY",
|
||||||
|
rhs = function()
|
||||||
|
require("data.func").dump_buffer_to_table("+")
|
||||||
|
end,
|
||||||
|
desc = "Yank buffer as table",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{ -- Yank buffer
|
||||||
|
lhs = "<leader>by",
|
||||||
|
rhs = "<cmd>%y<cr>",
|
||||||
|
desc = "Yank buffer",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
M.nekifoch = {
|
M.nekifoch = {
|
||||||
|
|||||||
Reference in New Issue
Block a user