sauce-nvim-config/lua/themenacesauce/core/keymaps.lua

69 lines
2.9 KiB
Lua

local opts = { noremap = true, silent = true }
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "moves lines down in visual selection" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "moves lines up in visual selection" })
vim.keymap.set("n", "J", "mzJ`z")
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "move down in buffer with cursor centered" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "move up in buffer with cursor centered" })
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- select single or multiple lines and move them up or down without having to re-enter visual mode
vim.keymap.set("v", "<", "<gv", opts)
vim.keymap.set("v", ">", ">gv", opts)
-- Paste without replacing clipboard content by x.
vim.keymap.set("x","<leader>p", [["_dP]])
-- tab stuff
vim.keymap.set("n", "<leader>to", "<cmd>tabnew<CR>") --open new tab
vim.keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>") --close current tab
vim.keymap.set("n", "<leader>tn", "<cmd>tabn<CR>") --go to next
vim.keymap.set("n", "<leader>tp", "<cmd>tabp<CR>") --go to pre
vim.keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>") --open current tab in new tab
--split management
vim.keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" })
-- split window vertically
vim.keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" })
-- split window horizontally
vim.keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" }) -- make split windows equal width & height
-- close current split window
vim.keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" })
-- vim tmux settings
local M = {}
M.general = {
n = {
["<C-h>"] = { "<cmd> TmuxNavigateLeft<CR>", "window left"},
["<C-l>"] = { "<cmd> TmuxNavigateRight<CR>", "window right"},
["<C-j>"] = { "<cmd> TmuxNavigateDown<CR>", "window down"},
["<C-k>"] = { "<cmd> TmuxNavigateUp<CR>", "window up"},
}
}
-- Replace the word cursor is on globally
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = "Replace word cursor is on globally" })
-- Copy filepath to the clipboard
vim.keymap.set("n", "<leader>fp", function()
local filePath = vim.fn.expand("%:~") -- Gets the file path relative to the home directory
vim.fn.setreg("+", filePath) -- Copy the file path to the clipboard register
print("File path copied to clipboard: " .. filePath)
end, { desc = "Copy file path to clipboard" })
-- Toggle LSP diagnostics visibility
local isLspDiagnosticsVisible = true
vim.keymap.set("n", "<leader>lx", function()
isLspDiagnosticsVisible = not isLspDiagnosticsVisible
vim.diagnostic.config({
virtual_text = isLspDiagnosticsVisible,
underline = isLspDiagnosticsVisible
})
end, { desc = "Toggle LSP diagnostics" })