nvim tweaks

This commit is contained in:
Henrik Bakken
2025-04-03 11:48:48 +02:00
parent fb677b60f5
commit 1720e2690a
+69 -37
View File
@@ -1,12 +1,12 @@
vim.g.mapleader = vim.keycode("<space>") vim.g.mapleader = vim.keycode("<space>")
vim.g.maplocalleader = vim.keycode("<cr>") vim.g.maplocalleader = vim.keycode("/")
vim.o.langmap = "ø:" vim.o.langmap = "ø:"
-- general options -- general options
vim.o.shell = "/usr/bin/zsh" vim.o.shell = "/usr/bin/zsh"
vim.g.BASH_Ctrl_j = "off" vim.g.BASH_Ctrl_j = "off"
vim.g.BASH_Ctrl_l = "off" vim.g.BASH_Ctrl_l = "off"
vim.opt.clipboard = vim.opt.clipboard + { "unnamedplus" } vim.opt.clipboard:append("unnamedplus")
vim.o.guicursor = "n-v-c:block-CustomCursor,i:ver100-CustomICursor,n-v-c:blinkon0,i:blinkwait10" vim.o.guicursor = "n-v-c:block-CustomCursor,i:ver100-CustomICursor,n-v-c:blinkon0,i:blinkwait10"
vim.o.cursorline = true vim.o.cursorline = true
vim.o.list = true vim.o.list = true
@@ -18,11 +18,14 @@ vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
vim.o.cmdheight = 0 vim.o.cmdheight = 0
vim.o.showmode = false vim.o.showmode = false
vim.o.sidescrolloff = 8 vim.o.sidescrolloff = 8
vim.o.timeoutlen = 300 vim.o.timeoutlen = 700
vim.o.virtualedit = "block" vim.o.virtualedit = "block"
vim.o.wildmode = "longest:full,full" vim.o.wildmode = "longest:full,full"
vim.o.wrap = false vim.o.wrap = false
vim.opt.diffopt:append("linematch:60") -- second stage diff to align lines vim.opt.diffopt:append("linematch:60") -- second stage diff to align lines
vim.opt.diffopt:append("hiddenoff")
vim.opt.diffopt:append("vertical")
vim.opt.diffopt:append("algorithm:histogram")
-- File History -- File History
vim.o.undofile = true vim.o.undofile = true
@@ -105,9 +108,6 @@ vim.diagnostic.config({
-- ---------------------------------------- -- ----------------------------------------
local map = vim.keymap.set local map = vim.keymap.set
-- swap ;:
map({ "n", "v" }, ";", ":")
map({ "n", "v" }, ":", ";")
-- better esc -- better esc
map({ "i", "n", "s" }, "<esc>", function() map({ "i", "n", "s" }, "<esc>", function()
@@ -145,6 +145,15 @@ map("i", ",", ",<c-g>u")
map("i", ".", ".<c-g>u") map("i", ".", ".<c-g>u")
map("i", ";", ";<c-g>u") map("i", ";", ";<c-g>u")
-- save file
map({ "i", "x", "n", "s" }, "<leader>ww", "<cmd>w<cr><esc>", { desc = "Save File" })
-- quit
map("n", "<leader>qq", "<cmd>q<cr>", { desc = "Close Window" })
map("n", "<leader>qQ", "<cmd>qa<cr>", { desc = "Quit All" })
map("n", "<leader>qw", "<cmd>wq<cr>", { desc = "Write And Close Window" })
map("n", "<leader>qW", "<cmd>wqa<cr>", { desc = "Write And Quit All" })
--keywordprg --keywordprg
map("n", "<leader>K", "<cmd>norm! K<cr>", { desc = "Keywordprg" }) map("n", "<leader>K", "<cmd>norm! K<cr>", { desc = "Keywordprg" })
@@ -195,7 +204,7 @@ map("n", "<leader><tab>d", "<cmd>tabclose<cr>", { desc = "Close Tab" })
map("n", "<leader><tab>p", "<cmd>tabprevious<cr>", { desc = "Previous Tab" }) map("n", "<leader><tab>p", "<cmd>tabprevious<cr>", { desc = "Previous Tab" })
-- other -- other
map("n", "<leader>ww", [[:cd %:p:h<cr>]], { desc = "Set Workspace To Buffer Path" }) map("n", "<leader>cw", [[:cd %:p:h<cr>]], { desc = "Set Workspace To Buffer Path" })
map("n", "<leader>o", "m`o<Esc>``", { desc = "Insert Newline" }) map("n", "<leader>o", "m`o<Esc>``", { desc = "Insert Newline" })
map("n", "\\", "n.", { noremap = true, silent = true, desc = "Repeat And Goto Next" }) map("n", "\\", "n.", { noremap = true, silent = true, desc = "Repeat And Goto Next" })
map("n", "<F2>", "<cmd>Lazy<cr>", { desc = "Lazy" }) map("n", "<F2>", "<cmd>Lazy<cr>", { desc = "Lazy" })
@@ -257,6 +266,7 @@ vim.api.nvim_create_autocmd("FileType", {
"checkhealth", "checkhealth",
"floggraph", "floggraph",
"fugitive", "fugitive",
"git",
"gitsigns-blame", "gitsigns-blame",
"grug-far", "grug-far",
"help", "help",
@@ -320,6 +330,14 @@ local function makespecs_themes()
return { return {
"NLKNguyen/papercolor-theme", "NLKNguyen/papercolor-theme",
"junegunn/seoul256.vim", "junegunn/seoul256.vim",
{
"mcauley-penney/phobos-anomaly.nvim",
priority = 1000,
config = function()
vim.cmd("colorscheme phobos-anomaly")
vim.api.nvim_set_hl(0, "Visual", { bg = "#3c3f4e" })
end,
},
{ {
"mhartington/oceanic-next", "mhartington/oceanic-next",
config = function() config = function()
@@ -344,7 +362,6 @@ local function makespecs_themes()
lazy = false, lazy = false,
name = "catppuccin", name = "catppuccin",
priority = 1000, priority = 1000,
config = function() vim.cmd([[colorscheme catppuccin-mocha]]) end,
}, },
{ {
"Shatur/neovim-ayu", "Shatur/neovim-ayu",
@@ -362,7 +379,7 @@ local function makespec_lspconfig()
dependencies = { { "j-hui/fidget.nvim", opts = {} } }, dependencies = { { "j-hui/fidget.nvim", opts = {} } },
event = { "BufReadPost", "BufNewFile" }, event = { "BufReadPost", "BufNewFile" },
cmd = { "LspInfo", "LspRestart", "LspStart", "LspStop" }, cmd = { "LspInfo", "LspRestart", "LspStart", "LspStop" },
keys = { { "<F3>", "<cmd>LspInfo<cr>", noremap = true } }, keys = { { "<F4>", "<cmd>LspInfo<cr>", noremap = true } },
config = function() config = function()
local lspconfig = require("lspconfig") local lspconfig = require("lspconfig")
lspconfig.tinymist.setup({}) lspconfig.tinymist.setup({})
@@ -514,9 +531,7 @@ local function makespec_lualine()
{ {
"buffers", "buffers",
symbols = { alternate_file = "" }, symbols = { alternate_file = "" },
buffers_color = { buffers_color = { active = { bg = "goldenrod" } },
active = { bg = "goldenrod" },
},
}, },
}, },
lualine_b = {}, lualine_b = {},
@@ -527,9 +542,7 @@ local function makespec_lualine()
{ {
"tabs", "tabs",
mode = 2, mode = 2,
tabs_color = { tabs_color = { active = { bg = "goldenrod" } },
active = { bg = "goldenrod" },
},
}, },
}, },
}, },
@@ -714,8 +727,8 @@ local function makespec_fugitive()
end, end,
keys = { keys = {
{ "<leader>gg", "<cmd>vertical Git<cr>", desc = "Fugitive" }, { "<leader>gg", "<cmd>vertical Git<cr>", desc = "Fugitive" },
{ "<leader>gp", "<cmd>Git! push<cr>", desc = "Git Push" }, { "<leader>gp", "<cmd>Git push<cr>", desc = "Git Push" },
{ "<leader>gP", "<cmd>Git! push -f<cr>", desc = "Git Force Push" }, { "<leader>gP", "<cmd>Git push -f<cr>", desc = "Git Force Push" },
}, },
} }
end end
@@ -747,25 +760,25 @@ local function makespec_gitsigns()
bmap("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame Line") bmap("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame Line")
-- Hunk -- Hunk
bmap("n", "<leader>hp", gs.preview_hunk_inline, "Preview Hunk Inline") bmap("n", "<leader>gI", gs.preview_hunk_inline, "Preview Hunk Inline")
bmap("n", "<leader>hi", gs.preview_hunk, "Preview Hunk") bmap("n", "<leader>gi", gs.preview_hunk, "Preview Hunk")
bmap("n", "<leader>hq", gs.setqflist, "File Hunks to QuickFix") bmap("n", "<leader>gq", gs.setqflist, "File Hunks to QuickFix")
bmap("n", "<leader>hQ", function() gs.setqflist("all") end, "All Hunks to QuickFix") bmap("n", "<leader>gQ", function() gs.setqflist("all") end, "All Hunks to QuickFix")
bmap("n", "<leader>hx", gs.reset_hunk, "Reset Hunk") bmap("n", "<leader>gx", gs.reset_hunk, "Reset Hunk")
bmap("v", "<leader>hx", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Reset Hunk") bmap("v", "<leader>gx", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Reset Hunk")
bmap("n", "<leader>hR", gs.reset_buffer, "Reset Buffer") bmap("n", "<leader>gR", gs.reset_buffer, "Reset Buffer")
bmap("n", "<leader>hs", gs.stage_hunk, "Stage Hunk") bmap("n", "<leader>gs", gs.stage_hunk, "Stage Hunk")
bmap("v", "<leader>hs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Stage Hunk") bmap("v", "<leader>gs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Stage Hunk")
bmap("n", "<leader>hS", gs.stage_buffer, "Stage Buffer") bmap("n", "<leader>gS", gs.stage_buffer, "Stage Buffer")
bmap("n", "<leader>hu", gs.undo_stage_hunk, "Undo Stage Hunk") bmap("n", "<leader>gu", gs.undo_stage_hunk, "Undo Stage Hunk")
bmap({ "n", "v" }, "<leader>hv", gs.select_hunk, "Select Hunk") bmap({ "n", "v" }, "<leader>gv", gs.select_hunk, "Select Hunk")
-- Toggles -- Toggles
bmap("n", "<leader>hd", gs.toggle_deleted, "Toggle Show Deleted Lines") bmap("n", "<leader>gtd", gs.toggle_deleted, "Toggle Show Deleted Lines")
bmap("n", "<leader>hl", gs.toggle_linehl, "Toggle Diff Line Highlight") bmap("n", "<leader>gtl", gs.toggle_linehl, "Toggle Diff Line Highlight")
bmap("n", "<leader>hb", gs.toggle_current_line_blame, "Toggle Line Blame") bmap("n", "<leader>gtb", gs.toggle_current_line_blame, "Toggle Line Blame")
bmap("n", "<leader>hh", gs.toggle_word_diff, "Toggle Diff Word Colors") bmap("n", "<leader>gth", gs.toggle_word_diff, "Toggle Diff Word Colors")
bmap("n", "<leader>hn", gs.toggle_numhl, "Toggle Diff Line Number Highlight") bmap("n", "<leader>gtn", gs.toggle_numhl, "Toggle Diff Line Number Highlight")
-- Text object, e.g. for dih to delete hunk -- Text object, e.g. for dih to delete hunk
bmap({ "o", "x" }, "ih", "<cmd>Gitsigns select_hunk<CR>") bmap({ "o", "x" }, "ih", "<cmd>Gitsigns select_hunk<CR>")
@@ -812,9 +825,10 @@ local function makespec_whichkey()
{ "<leader>c", group = "code/content" }, { "<leader>c", group = "code/content" },
{ "<leader>f", group = "file/find" }, { "<leader>f", group = "file/find" },
{ "<leader>g", group = "git" }, { "<leader>g", group = "git" },
{ "<leader>h", group = "hunks" }, { "<leader>gt", group = "toggles" },
{ "<leader>l", group = "logs" }, { "<leader>l", group = "logs" },
{ "<leader>p", group = "autoformat" }, { "<leader>p", group = "autoformat" },
{ "<leader>q", group = "quit" },
{ "<leader>s", group = "search" }, { "<leader>s", group = "search" },
{ "<leader>u", group = "ui", icon = { icon = "󰙵 ", color = "cyan" } }, { "<leader>u", group = "ui", icon = { icon = "󰙵 ", color = "cyan" } },
{ "[", group = "prev" }, { "[", group = "prev" },
@@ -912,7 +926,8 @@ local function makespec_snacks()
-- stylua: ignore -- stylua: ignore
keys = { keys = {
{ "<leader>fr", function() Snacks.rename.rename_file() end, desc = "Rename File" }, { "<leader>fr", function() Snacks.rename.rename_file() end, desc = "Rename File" },
{ "<leader>d", function() Snacks.bufdelete() end, desc = "Delete Buffer" }, { "<M-d>", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
{ "<leader>qd", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
{ "<leader>gl", function() Snacks.lazygit() end, desc = "Launch Lazygit" }, { "<leader>gl", function() Snacks.lazygit() end, desc = "Launch Lazygit" },
{ "<leader>.", function() Snacks.scratch.open() end, desc = "Scratch Buffer" }, { "<leader>.", function() Snacks.scratch.open() end, desc = "Scratch Buffer" },
-- find -- find
@@ -1107,7 +1122,24 @@ end
local function makespec_flash() local function makespec_flash()
return { return {
"folke/flash.nvim", "folke/flash.nvim",
opts = {}, event = "VeryLazy",
opts = {
label = { uppercase = false },
jump = { autojump = true },
modes = {
char = {
jump = { autojump = true },
char_actions = function(motion)
return {
[";"] = "right", -- set to `right` to always go right
[","] = "left", -- set to `left` to always go left
[motion:lower()] = "next",
[motion:upper()] = "prev",
}
end,
},
},
},
-- stylua: ignore -- stylua: ignore
keys = { keys = {
{ "<cr>", mode = { "n", "o", "x" }, function() require("flash").jump() end, desc = "Flash" }, { "<cr>", mode = { "n", "o", "x" }, function() require("flash").jump() end, desc = "Flash" },