1
0
mirror of https://github.com/tiyn/dotfiles.git synced 2026-03-28 10:24:47 +01:00

NVIM: Keymap layout is now Lazy-centric

This commit is contained in:
2026-03-26 07:01:33 +01:00
parent 0f06cc10c8
commit 3c3cfd333d
43 changed files with 886 additions and 934 deletions

View File

@@ -1,441 +1,42 @@
-- setup keymap function
local lazygit = require("FTerm"):new({ cmd = "lazygit" })
local telescope = require("telescope")
local wk = require("which-key")
-- unmap unwanted commands
vim.keymap.set("n", "Zt", "<NOP>", { noremap = true })
vim.keymap.set("n", "ZT", "<NOP>", { noremap = true })
vim.keymap.set("n", "<Space>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F1>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F2>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F3>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F4>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F5>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F6>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F7>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F8>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F9>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F10>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F11>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F12>", "<NOP>", { noremap = true })
wk.add({
-- setup keymap groups
{ mode = "n", "g", desc = "LSP: goto" },
{ mode = "n", "gp", desc = "LSP: preview" },
{ mode = "c", "w", desc = "Write" },
{ mode = "c", "w!", desc = "Write: overwrite" },
{ mode = "n", "<leader>a", desc = "AI" },
{ mode = "n", "<leader>g", desc = "Git" },
{ mode = "n", "<leader>f", desc = "Telescope: find" },
{ mode = "n", "<leader>gd", desc = "Git: diff" },
{ mode = "n", "<leader>s", desc = "Substitute" },
{ mode = "n", "<leader>t", desc = "Terminal" },
{ mode = "n", "<leader>r", desc = "Quarto" },
{ mode = "n", "<C-W>", desc = "Navigation" },
-- unmap unwanted commands
{ mode = "n", "Zt", "<NOP>", noremap = true },
{ mode = "n", "ZT", "<NOP>", noremap = true },
{ mode = "n", "<Space>", "<NOP>", noremap = true },
{ mode = "n", "<F1>", "<NOP>", noremap = true },
{ mode = "n", "<F2>", "<NOP>", noremap = true },
{ mode = "n", "<F3>", "<NOP>", noremap = true },
{ mode = "n", "<F4>", "<NOP>", noremap = true },
{ mode = "n", "<F5>", "<NOP>", noremap = true },
{ mode = "n", "<F6>", "<NOP>", noremap = true },
{ mode = "n", "<F7>", "<NOP>", noremap = true },
{ mode = "n", "<F8>", "<NOP>", noremap = true },
{ mode = "n", "<F9>", "<NOP>", noremap = true },
{ mode = "n", "<F10>", "<NOP>", noremap = true },
{ mode = "n", "<F11>", "<NOP>", noremap = true },
{ mode = "n", "<F12>", "<NOP>", noremap = true },
-- shortcuts for quitting
{ mode = "n", "ZA", ":xa<CR>", desc = "Exit: write and quit all buffers", noremap = true },
{ mode = "n", "ZQ", ":conf q<CR>", desc = "Exit: quit current buffer", noremap = true },
{ mode = "n", "ZZ", ":x<CR>", desc = "Exit: write and quit current buffer", noremap = true },
-- shortcut for split navigation
{ mode = "n", "<C-h>", "<C-w>h", desc = "Navigation: go to left window", noremap = true },
{ mode = "n", "<C-j>", "<C-w>j", desc = "Navigation: go to lower window", noremap = true },
{ mode = "n", "<C-k>", "<C-w>k", desc = "Navigation: go to upper window", noremap = true },
{ mode = "n", "<C-l>", "<C-w>l", desc = "Navigation: go to right window", noremap = true },
-- remap for dealing with word wrap
{ mode = "n", "j", "gj", desc = "Navigation: go down in wrapped lines", silent = true },
{ mode = "n", "k", "gk", desc = "Navigation: go up in wrapped lines", silent = true },
-- compiler for languages
{
mode = "n",
"<leader>c",
":w! | !compiler <c-r>%<CR>",
desc = "Compile: current file",
noremap = true,
},
{
mode = "n",
"w!!",
'execute "silent! write !sudo tee % >/dev/null" <bar> edit!',
desc = "Write: overwrite file over with sudo",
noremap = true,
},
-- tpope/vim-abolish
{
mode = "n",
"<leader>sa",
":%S//g<Left><Left>",
desc = "Substitute: free form",
noremap = true,
},
{
mode = "n",
"<leader>ss",
":%S/\\<<C-r><C-w>\\>//g<Left><Left>",
desc = "Substitute: word under cursor",
noremap = true,
},
-- simrat39/symbols-outline.nvim
{ mode = "n", "<F3>", ":Outline<CR>", desc = "CTags: toggle" },
-- nvim-tree/nvim-tree.lua
{ mode = "n", "<F2>", ":NvimTreeToggle toggle<CR>", desc = "File tree: toggle" },
-- mbbill/undotree
{ mode = "n", "<F1>", ":UndotreeToggle<CR>", desc = "Undo tree: toggle" },
-- amrbashir/nvim-docs-view
{
mode = "n",
"go",
":DocsViewToggle<CR>",
desc = "LSP: toggle documentation window",
noremap = true,
},
-- numtostr/fterm.nvim
{ mode = "n", "<leader>tt", require("FTerm").toggle, desc = "Terminal: open", noremap = true },
{
mode = "n",
"<leader>gt",
function()
lazygit:toggle()
end,
desc = "Git: open lazygit",
noremap = true,
},
{
mode = "n",
"<leader>tg",
function()
lazygit:toggle()
end,
desc = "Terminal: open lazygit",
noremap = true,
},
-- sindrets/diffview.nvim
{ mode = "n", "<leader>gdo", ":DiffviewOpen<CR>", desc = "Git: open diff" },
{ mode = "n", "<leader>gdc", ":DiffviewClose<CR>", desc = "Git: close diff" },
-- folke/trouble.nvim
{ mode = "n", "<F4>", ":Trouble diagnostics toggle<CR>", desc = "LSP: toggle error list" },
-- hrsh7th/nvim-cmp
{
mode = "n",
"gd",
function()
vim.lsp.buf.definition()
end,
desc = "LSP: goto definition",
noremap = true,
},
{
mode = "n",
"gD",
function()
vim.lsp.buf.declaration()
end,
desc = "LSP: goto declaration",
noremap = true,
},
{
mode = "n",
"gT",
function()
vim.lsp.buf.type_definition()
end,
desc = "LSP: goto type definition",
noremap = true,
},
{
mode = "n",
"gi",
function()
vim.lsp.buf.implementation()
end,
desc = "LSP: list implementation",
noremap = true,
},
{
mode = "n",
"gr",
function()
vim.lsp.buf.references()
end,
desc = "LSP: list references",
noremap = true,
},
{
mode = "n",
"<F8>",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
desc = "LSP: format",
noremap = true,
},
-- rmagatti/goto-preview
{
mode = "n",
"gpd",
function()
require("goto-preview").goto_preview_definition()
end,
desc = "LSP: preview definition",
noremap = true,
},
{
mode = "n",
"gpy",
function()
require("goto-preview").goto_preview_type_definition()
end,
desc = "LSP: preview type definition",
noremap = true,
},
{
mode = "n",
"gpi",
function()
require("goto-preview").goto_preview_implementation()
end,
desc = "LSP: list preview implementation",
noremap = true,
},
{
mode = "n",
"gpD",
function()
require("goto-preview").goto_preview_declaration()
end,
desc = "LSP: preview declaration",
noremap = true,
},
{
mode = "n",
"gpr",
function()
require("goto-preview").goto_preview_references()
end,
desc = "LSP: list preview references",
noremap = true,
},
{
mode = "n",
"gpc",
function()
require("goto-preview").close_all_win()
end,
desc = "LSP: close all preview windows",
noremap = true,
},
-- filipdutescu/renamer.nvim
{
mode = "n",
"<F5>",
function()
require("renamer").rename()
end,
desc = "LSP: rename",
noremap = true,
},
-- nvim-telescope/telescope.nvim
{
mode = "n",
"<leader>ff",
":Telescope find_files<CR>",
desc = "Telescope: find files",
noremap = true,
},
{
mode = "n",
"<leader>ff",
":Telescope find_files<CR>",
desc = "Telescope: find files",
noremap = true,
},
-- archie-judd/telescope-words.nvim
{
mode = "n",
"<leader>wd",
telescope.extensions.telescope_words.search_dictionary,
desc = "Telescope: search dictionary",
noremap = true,
},
{
mode = "n",
"<leader>wt",
telescope.extensions.telescope_words.search_thesaurus,
desc = "Telescope: search thesaurus",
noremap = true,
},
-- gnikdroy/projections.nvim
{
mode = "n",
"<leader>fp",
function()
vim.cmd("Telescope projections")
end,
desc = "Telescope: find projects",
noremap = true,
},
-- kamykn/spelunker.vim
{
mode = "n",
"<F10>t",
":call spelunker#toggle()<CR>",
desc = "Spelunker: toggle spell check",
noremap = true,
},
{ mode = "n", "<F10>s", "z=", desc = "Spell: display suggestions" },
-- kevinhwang91/nvim-hlslens
{
mode = "n",
"n",
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search forward",
noremap = true,
silent = true,
},
{
mode = "n",
"N",
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search backwards",
noremap = true,
silent = true,
},
-- sindrets/winshift.nvim
{
mode = "n",
"<C-W>m",
":WinShift<CR>",
desc = "Navigation: enter window shift mode",
noremap = true,
},
-- ggandor/leap.nvim
{
mode = "n",
"f",
"<Plug>(leap-forward)",
desc = "Navigation: enter leap mode for forward movement",
noremap = true,
},
{
mode = "n",
"F",
"<Plug>(leap-backward)",
desc = "Navigation: enter leap mode for backwards movement",
noremap = true,
},
{
mode = "n",
"gf",
"<Plug>(leap-from-window)",
desc = "Navigation: enter leap mode for other windows",
noremap = true,
},
-- quarto-dev/quarto-nvim
{
mode = "n",
"<leader>rc",
require("quarto.runner").run_cell,
desc = "Quarto: Run cell",
noremap = true,
silent = true,
},
{
mode = "n",
"<leader>ra",
require("quarto.runner").run_above,
desc = "Quarto: Run cell and above",
noremap = true,
silent = true,
},
{
mode = "n",
"<leader>rA",
require("quarto.runner").run_all,
desc = "Quarto: Run all cells",
noremap = true,
silent = true,
},
{
mode = "n",
"<leader>rl",
require("quarto.runner").run_line,
desc = "Quarto: Run line",
noremap = true,
silent = true,
},
{
mode = "n",
"<leader>rr",
require("quarto.runner").run_range,
desc = "Quarto: Run visual range",
noremap = true,
silent = true,
},
{
mode = "n",
"<leader>rL",
function()
require("quarto.runner").run_all(true)
end,
desc = "Quarto: Run all cells of all languages",
noremap = true,
silent = true,
},
-- huynle/ogpt-nvim
{ mode = "n", "<leader>ai", ":OGPT<CR>", desc = "OGTP: Open AI View", noremap = true },
-- potamides/pantran.nvim
{
mode = { "n", "v" },
"<leader>tr",
":Pantran<CR>",
desc = "Pantran: translate",
noremap = true,
},
-- aaronik/treewalkr.nvim
{ mode = { "n", "v" }, "<leader><C-k>", "<cmd>Treewalker Up<cr>", silent = true },
{ mode = { "n", "v" }, "<leader><C-j>", "<cmd>Treewalker Down<cr>", silent = true },
{ mode = { "n", "v" }, "<leader><C-h>", "<cmd>Treewalker Left<cr>", silent = true },
{ mode = { "n", "v" }, "<leader><C-l>", "<cmd>Treewalker Right<cr>", silent = true },
{ mode = { "n" }, "<leader><C-S-k>", "<cmd>Treewalker SwapUp<cr>", silent = true },
{ mode = { "n" }, "<leader><C-S-j>", "<cmd>Treewalker SwapDown<cr>", silent = true },
{ mode = { "n" }, "<leader><C-S-h>", "<cmd>Treewalker SwapLeft<cr>", silent = true },
{ mode = { "n" }, "<leader><C-S-l>", "<cmd>Treewalker SwapRight<cr>", silent = true },
-- shortcuts for quitting
vim.keymap.set("n", "ZA", ":xa<CR>", { desc = "Exit: write and quit all buffers", noremap = true })
vim.keymap.set("n", "ZQ", ":conf q<CR>", { desc = "Exit: quit current buffer", noremap = true })
vim.keymap.set("n", "ZZ", ":x<CR>", { desc = "Exit: write and quit current buffer", noremap = true })
-- monaqa/dial.nvim
{
mode = { "n" },
"<C-a>",
function()
require("dial.map").manipulate("increment", "normal")
end,
silent = true,
},
{
mode = { "n" },
"<C-x>",
function()
require("dial.map").manipulate("decrement", "normal")
end,
silent = true,
},
-- shortcut for split navigation
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Navigation: go to left window", noremap = true })
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Navigation: go to lower window", noremap = true })
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Navigation: go to upper window", noremap = true })
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Navigation: go to right window", noremap = true })
-- Wansmer/treesj
{
mode = { "n" },
"<leader>m",
function()
require("treesj").toggle()
end,
},
-- remap for dealing with word wrap
vim.keymap.set("n", "j", "gj", { desc = "Navigation: go down in wrapped lines", silent = true })
vim.keymap.set("n", "k", "gk", { desc = "Navigation: go up in wrapped lines", silent = true })
-- compiler for languages
vim.keymap.set("n", "<leader>c", ":w! | !compiler <c-r>%<CR>", {
desc = "Compile: current file",
noremap = true,
})
-- kevinhwang91/nvim-ufo - lspconfig
vim.keymap.set("n", "K", function()
local winid = require("ufo").peekFoldedLinesUnderCursor()
if not winid then
vim.lsp.buf.hover({ border = "rounded", focusable = false, max_width = 100 })
end
end, {
buffer = bufnr,
desc = "LSP: show documentation / peek folded section",
vim.keymap.set("n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', {
desc = "Write: overwrite file over with sudo",
noremap = true,
})