refactor config to define all keybinds in a single file

This commit is contained in:
2024-11-03 17:53:39 -05:00
parent 91ef397420
commit 37969ca98e
11 changed files with 180 additions and 156 deletions
+127 -2
View File
@@ -4,22 +4,147 @@ vim.g.maplocalleader = "\\"
local keymap = vim.keymap
-- general use
keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })
keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })
-- formatting
keymap.set({ "n", "v" }, "<leader>mp", function()
require("conform").format {
lsp_fallback = true,
async = false,
timeout_ms = 1000,
}
end, { desc = "Format file or range (in visual mode)" })
-- linting
vim.keymap.set("n", "<leader>l", function()
require("lint").try_lint()
end, { desc = "Trigger linting for current file" })
-- inc/dec numbers
keymap.set("n", "<leader>+", "<C-a>", { desc = "Increment number" })
keymap.set("n", "<leader>-", "<C-x>", { desc = "Decrement number" })
-- window management
-- split management
keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" })
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" })
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" })
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" })
keymap.set("n", "<leader>sm", "<cmd>MaximizerToggle<CR>", { desc = "Maximize/Minimize a split" })
-- tab management
keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" })
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" })
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" })
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" })
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" })
-- session management
keymap.set("n", "<leader>wa", "<cmd>SessionToggleAutoSave<CR>", { desc = "Toggle session autosave" })
keymap.set("n", "<leader>wD", "<cmd>Autosession delete<CR>", { desc = "Delete a session" })
keymap.set("n", "<leader>wd", "<cmd>SessionDelete<CR>", { desc = "Delete session for cwd" })
keymap.set("n", "<leader>wl", "<cmd>SessionSearch<CR>", { desc = "Open session picker" })
keymap.set("n", "<leader>wr", "<cmd>SessionRestore<CR>", { desc = "Restore session for cwd" })
keymap.set("n", "<leader>ws", "<cmd>SessionSave<CR>", { desc = "Save session for cwd" })
-- diff
keymap.set("n", "<leader>hd", function()
require("gitsigns").diffthis()
end, { desc = "Diff this" })
keymap.set("n", "<leader>hD", function()
require("gitsigns").diffthis "~"
end, { desc = "Diff this ~" })
-- todo comments
keymap.set("n", "]t", function()
require("todo-comments").jump_next()
end, { desc = "Next todo comment" })
keymap.set("n", "[t", function()
require("todo-comments").jump_prev()
end, { desc = "Previous todo comment" })
-- trouble
keymap.set("n", "<leader>xw", "<cmd>Trouble diagnostics toggle<CR>", { desc = "Open trouble workspace diagnostics" })
keymap.set(
"n",
"<leader>xd",
"<cmd>Trouble diagnostics toggle filter.buf=0<CR>",
{ desc = "Open trouble document diagnostics" }
)
keymap.set("n", "<leader>xq", "<cmd>Trouble quickfix toggle<CR>", { desc = "Open trouble quickfix list" })
keymap.set("n", "<leader>xl", "<cmd>Trouble loclist toggle<CR>", { desc = "Open trouble location list" })
keymap.set("n", "<leader>xt", "<cmd>Trouble todo toggle<CR>", { desc = "Open todos in trouble" })
-- telescope
keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Fuzzy find files in cwd" })
keymap.set("n", "<leader>fr", "<cmd>Telescope oldfiles<cr>", { desc = "Fuzzy find recent files" })
keymap.set("n", "<leader>fs", "<cmd>Telescope live_grep<cr>", { desc = "Find string in cwd" })
keymap.set("n", "<leader>fc", "<cmd>Telescope grep_string<cr>", { desc = "Find string under cursor in cwd" })
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
-- substitute
keymap.set("n", "s", function()
require("substitute").operator()
end, { desc = "Substitute with motion" })
keymap.set("n", "ss", function()
require("substitute").line()
end, { desc = "Substitute line" })
keymap.set("n", "S", function()
require("substitute").line()
end, { desc = "Substitute to end of line" })
keymap.set("x", "s", function()
require("substitute").visual()
end, { desc = "Substitute in visual mode" })
-- nvim-tree
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" })
keymap.set("n", "<leader>ef", "<cmd>NvimTreeFindFileToggle<CR>", { desc = "Toggle file explorer on current file" })
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "Collapse file explorer" })
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "Refresh file explorer" })
-- git
keymap.set("n", "<leader>lg", "<cmd>LazyGit<cr>", { desc = "Open LazyGit" })
keymap.set("n", "]h", function()
require("gitsigns").next_hunk()
end, { desc = "Next hunk" })
keymap.set("n", "[h", function()
require("gitsigns").prev_hunk()
end, { desc = "Prev hunk" })
keymap.set("n", "<leader>hs", function()
require("gitsigns").stage_hunk()
end, { desc = "Stage Hunk" })
keymap.set("n", "<leader>hr", function()
require("gitsigns").reset_hunk()
end, { desc = "Reset Hunk" })
keymap.set("v", "<leader>hs", function()
require("gitsigns").stage_hunk { vim.fn.line ".", vim.fn.line "v" }
end, { desc = "Stage Hunk" })
keymap.set("v", "<leader>hr", function()
require("gitsigns").reset_hunk { vim.fn.line ".", vim.fn.line "v" }
end, { desc = "Reset Hunk" })
keymap.set("n", "<leader>hS", function()
require("gitsigns").stage_buffer()
end, { desc = "Stage buffer" })
keymap.set("n", "<leader>hR", function()
require("gitsigns").reset_buffer()
end, { desc = "Reset buffer" })
keymap.set("n", "<leader>hu", function()
require("gitsigns").undo_stage_hunk()
end, { desc = "Undo stage hunk" })
keymap.set("n", "<leader>hp", function()
require("gitsigns").preview_hunk()
end, { desc = "Preview hunk" })
keymap.set("n", "<leader>hb", function()
require("gitsigns").blame_line { full = true }
end, { desc = "Blame line" })
keymap.set("n", "<leader>hB", function()
require("gitsigns").toggle_current_line_blame()
end, { desc = "Toggle line blame" })
keymap.set({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", { desc = "Gitsigns select hunk" })
-- icon picker
keymap.set("n", "<Leader>i", "<cmd>IconPickerNormal<cr>", { desc = "Open icon picker" })
keymap.set("n", "<Leader>iy", "<cmd>IconPickerYank<cr>", { desc = "Yank icon picker" }) --> Yank the selected icon into register
-- keymap.set("i", "<C-i>", "<cmd>IconPickerInsert<cr>", { desc = "Pick Icon to Insert" })
-10
View File
@@ -2,16 +2,6 @@ return {
"rmagatti/auto-session",
lazy = false,
-- Configure keybinds
keys = {
{ "<leader>wa", "<cmd>SessionToggleAutoSave<CR>", desc = "Toggle session autosave" },
{ "<leader>wD", "<cmd>Autosession delete<CR>", desc = "Delete a session" },
{ "<leader>wd", "<cmd>SessionDelete<CR>", desc = "Delete session for cwd" },
{ "<leader>wl", "<cmd>SessionSearch<CR>", desc = "Open session picker" },
{ "<leader>wr", "<cmd>SessionRestore<CR>", desc = "Restore session for cwd" },
{ "<leader>ws", "<cmd>SessionSave<CR>", desc = "Save session for cwd" },
},
---@module "auto-session"
---@type AutoSession.Config
opts = {
-34
View File
@@ -70,39 +70,5 @@ return {
row = 0,
col = 1,
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, desc)
vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc })
end
map("n", "]h", gs.next_hunk, "Next hunk")
map("n", "[h", gs.prev_hunk, "Prev hunk")
map("n", "<leader>hs", gs.stage_hunk, "Stage Hunk")
map("n", "<leader>hr", gs.reset_hunk, "Reset Hunk")
map("v", "<leader>hs", function()
gs.stage_hunk { vim.fn.line ".", vim.fn.line "v" }
end, "Reset Hunk")
map("n", "<leader>hS", gs.stage_buffer, "Stage buffer")
map("n", "<leader>hR", gs.reset_buffer, "Reset buffer")
map("n", "<leader>hu", gs.undo_stage_hunk, "Undo stage hunk")
map("n", "<leader>hp", gs.preview_hunk, "Preview hunk")
map("n", "<leader>hb", function()
gs.blame_line { full = true }
end, "Blame line")
map("n", "<leader>hB", gs.toggle_current_line_blame, "Toggle line blame")
map("n", "<leader>hd", gs.diffthis, "Diff this")
map("n", "<leader>hD", function()
gs.diffthis "~"
end, "Diff this ~")
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "Gitsigns select hunk")
end,
},
}
-3
View File
@@ -10,7 +10,4 @@ return {
dependencies = {
"nvim-lua/plenary.nvim",
},
keys = {
{ "<leader>lg", "<cmd>LazyGit<cr>", desc = "Open LazyGit" },
},
}
+5 -6
View File
@@ -3,14 +3,17 @@ return {
event = { "BufReadPre", "BufNewFile" },
config = function()
local lint = require("lint")
local lint = require "lint"
lint.linters_by_ft = {
markdown = { "markdownlint" },
html = { "htmlhint" },
json = { "jsonlint" },
bash = { "shellcheck", "shellharden" },
javascript = { "eslint_d" },
typescript = { "eslint_d" },
javascriptreact = { "eslint_d" },
typescriptreact = { "eslint_d" },
svelte = { "eslint_d" },
python = { "pylint" },
}
@@ -22,9 +25,5 @@ return {
lint.try_lint()
end,
})
vim.keymap.set("n", "<leader>l", function()
lint.try_lint()
end, { desc = "Trigger linting for current file"})
end,
}
+39 -52
View File
@@ -1,60 +1,47 @@
return {
"nvim-tree/nvim-tree.lua",
dependencies = "nvim-tree/nvim-web-devicons",
config = function()
local nvimtree = require "nvim-tree"
opts = {
view = {
width = 35,
relativenumber = true,
},
renderer = {
indent_markers = {
enable = true,
},
icons = {
glyphs = {
default = "",
folder = {
default = "",
open = "",
empty = "",
empty_open = "",
arrow_closed = "", -- arrow when folder is closed
arrow_open = "", -- arrow when folder is open
},
},
},
},
actions = {
open_file = {
window_picker = {
enable = false,
},
},
},
filters = {
custom = { ".DS_Store" },
},
git = {
ignore = false,
},
},
vim.g.loaded_netrw = 1
config = function(_, opts)
vim.g.loaded_netrwPlugin = 1
nvimtree.setup {
view = {
width = 35,
relativenumber = true,
},
renderer = {
indent_markers = {
enable = true,
},
icons = {
glyphs = {
default = "",
folder = {
default = "",
open = "",
empty = "",
empty_open = "",
arrow_closed = "", -- arrow when folder is closed
arrow_open = "", -- arrow when folder is open
},
},
},
},
actions = {
open_file = {
window_picker = {
enable = false,
},
},
},
filters = {
custom = { ".DS_Store" },
},
git = {
ignore = false,
},
}
local keymap = vim.keymap
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" })
keymap.set(
"n",
"<leader>ef",
"<cmd>NvimTreeFindFileToggle<CR>",
{ desc = "Toggle file explorer on current file" }
)
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "Collapse file explorer" })
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "Refresh file explorer" })
require("nvim-tree").setup(opts)
end,
}
+1 -8
View File
@@ -1,6 +1,7 @@
return {
"stevearc/conform.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
local conform = require "conform"
@@ -27,13 +28,5 @@ return {
timeout_ms = 1000,
},
}
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
conform.format {
lsp_fallback = true,
async = false,
timeout_ms = 1000,
}
end, { desc = "Format file or range (in visual mode)" })
end,
}
+2 -11
View File
@@ -1,17 +1,8 @@
return {
"gbprod/substitute.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
local substitute = require("substitute")
substitute.setup()
local keymap = vim.keymap
keymap.set("n", "s", substitute.operator, { desc = "Substitute with motion" })
keymap.set("n", "ss", substitute.line, { desc = "Substitute line" })
keymap.set("n", "S", substitute.line, { desc = "Substitute to end of line" })
keymap.set("x", "s", substitute.visual, { desc = "Substitute in visual mode" })
require("substitute").setup()
end,
}
-9
View File
@@ -35,14 +35,5 @@ return {
}
telescope.load_extension "fzf"
-- keymaps
local keymap = vim.keymap
keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Fuzzy find files in cwd" })
keymap.set("n", "<leader>fr", "<cmd>Telescope oldfiles<cr>", { desc = "Fuzzy find recent files" })
keymap.set("n", "<leader>fs", "<cmd>Telescope live_grep<cr>", { desc = "Find string in cwd" })
keymap.set("n", "<leader>fc", "<cmd>Telescope grep_string<cr>", { desc = "Find string under cursor in cwd" })
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
end,
}
+2 -13
View File
@@ -2,19 +2,8 @@ return {
"folke/todo-comments.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local todo_comments = require("todo-comments")
local keymap = vim.keymap
keymap.set("n", "]t", function()
todo_comments.jump_next()
end, { desc = "Next todo comment" })
keymap.set("n", "[t", function()
todo_comments.jump_prev()
end, { desc = "Previous todo comment" })
todo_comments.setup()
require("todo-comments").setup()
end,
}
+4 -8
View File
@@ -1,15 +1,11 @@
return {
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim", },
dependencies = {
"nvim-tree/nvim-web-devicons",
"folke/todo-comments.nvim",
},
opts = {
focus = true,
},
cmd = "Trouble",
keys = {
{ "<leader>xw", "<cmd>Trouble diagnostics toggle<CR>", desc = "Open trouble workspace diagnostics" },
{ "<leader>xd", "<cmd>Trouble diagnostics toggle filter.buf=0<CR>", desc = "Open trouble document diagnostics" },
{ "<leader>xq", "<cmd>Trouble quickfix toggle<CR>", desc = "Open trouble quickfix list" },
{ "<leader>xl", "<cmd>Trouble loclist toggle<CR>", desc = "Open trouble location list" },
{ "<leader>xt", "<cmd>Trouble todo toggle<CR>", desc = "Open todos in trouble" },
},
}