|
vim.keymap.set("i", "jk", "<esc>", {})
|
|
-- Don't copy "c" changes to primary register
|
|
vim.keymap.set("n", "c", '"_c', { desc = "Prevent copying to primary register" })
|
|
|
|
-- Move lines up and down
|
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
|
|
|
-- Easily open splits
|
|
vim.keymap.set("n", "<leader>bs", "<cmd>split<cr>", { desc = "Open horizontal spilt" })
|
|
vim.keymap.set("n", "<leader>vs", "<cmd>vsplit<cr>", { desc = "Open vertical spilt" })
|
|
|
|
-- Spell-check
|
|
vim.keymap.set("n", "<leader>o", function()
|
|
vim.cmd("setlocal spell! spelllang=en_au")
|
|
end, { desc = "Toggle spell check" })
|
|
|
|
-- Map Q to run q macro
|
|
vim.keymap.set("n", "Q", "@q", { desc = "Remap Q to run @q macro" })
|
|
vim.keymap.set("x", "Q", ":norm @q<CR>", { desc = "Remap Q to run @q macro" })
|
|
|
|
-- Keep highlight when indenting
|
|
vim.keymap.set("v", "<", "<gv", { desc = "Keep highlight when indenting" })
|
|
vim.keymap.set("v", ">", ">gv", { desc = "Keep highlight when indenting" })
|
|
|
|
vim.keymap.set("n", "<leader>tN", "<cmd>tabnew<CR>", { desc = "New tab" })
|
|
vim.keymap.set("n", "<leader>tn", "<cmd>tabnext<CR>", { desc = "Next tab" })
|
|
vim.keymap.set("n", "<leader>tp", "<cmd>tabprevious<CR>", { desc = "Previous tab" })
|
|
|
|
vim.keymap.set("x", "<leader>p", '"_dP', { desc = "Delete into black hole register" })
|
|
vim.keymap.set("n", "<leader>d", '"_d', { desc = "Delete into black hole register" })
|
|
vim.keymap.set("v", "<leader>d", '"_d', { desc = "Delete into black hole register" })
|
|
|
|
-- Keep page scroll centered
|
|
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Scroll down half page" })
|
|
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Scroll up half page" })
|
|
|
|
-- Keep cursor centered
|
|
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result" })
|
|
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result" })
|
|
|
|
-- Keep cursor centered when jumping through quickfix list
|
|
vim.keymap.set("n", "<leader>N", "<cmd>cprev<CR>zz", { desc = "Previous item in quickfix list" })
|
|
vim.keymap.set("n", "<leader>n", "<cmd>cnext<CR>zz", { desc = "Next item in quickfix list" })
|
|
|
|
-- Resize window
|
|
vim.keymap.set("n", "<C-w><left>", "5<C-w><")
|
|
vim.keymap.set("n", "<C-w><right>", "5<C-w>>")
|
|
vim.keymap.set("n", "<C-w><up>", "5<C-w>+")
|
|
vim.keymap.set("n", "<C-w><down>", "5<C-w>-")
|
|
|
|
-- Easily run global search and replace
|
|
vim.keymap.set(
|
|
"n",
|
|
"<leader>rr",
|
|
[[:%s/\<<C-r><C-w>\>//gI<Left><Left><Left>]],
|
|
{ desc = "Search and replace for word under cursor" }
|
|
)
|
|
|
|
vim.keymap.set("t", "<C-space>", "<C-\\><C-n>", { silent = true })
|
|
|
|
vim.keymap.set("n", "<leader>e", function() vim.cmd("edit notes.ignore.md") end)
|
|
vim.keymap.set("n", "<leader>.a", function() vim.cmd("edit app/api/.env") end)
|
|
vim.keymap.set("n", "<leader>.f", function() vim.cmd("edit app/frontend/.env.development.local") end)
|
|
|
|
-- Delete a buffer, without closing the window, see https://stackoverflow.com/q/4465095/6064933
|
|
vim.keymap.set("n", [[\d]], "<cmd>bprevious <bar> bdelete #<cr>", {
|
|
silent = true,
|
|
desc = "delete current buffer",
|
|
})
|
|
|
|
vim.keymap.set("n", [[\D]], function()
|
|
local buf_ids = vim.api.nvim_list_bufs()
|
|
local cur_buf = vim.api.nvim_win_get_buf(0)
|
|
|
|
for _, buf_id in pairs(buf_ids) do
|
|
-- do not Delete unlisted buffers, which may lead to unexpected errors
|
|
if vim.api.nvim_get_option_value("buflisted", { buf = buf_id }) and buf_id ~= cur_buf then
|
|
vim.api.nvim_buf_delete(buf_id, { force = true })
|
|
end
|
|
end
|
|
end, {
|
|
desc = "delete other buffers",
|
|
})
|