69 lines
2.9 KiB
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" })
|