mirror of
https://github.com/tiyn/dotfiles.git
synced 2026-03-17 14:14:47 +01:00
403 lines
10 KiB
Lua
403 lines
10 KiB
Lua
-- setup keymap function
|
|
local lazygit = require("FTerm"):new({ cmd = "lazygit" })
|
|
local telescope = require("telescope")
|
|
local wk = require("which-key")
|
|
|
|
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", "K", vim.lsp.buf.hover(), desc = "LSP: show documentation", 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-ufo
|
|
{
|
|
mode = "n",
|
|
"K",
|
|
function()
|
|
local winid = require("ufo").peekFoldedLinesUnderCursor()
|
|
if not winid then
|
|
vim.lsp.buf.hover()
|
|
end
|
|
end,
|
|
desc = "LSP: peek folded section",
|
|
noremap = true,
|
|
},
|
|
-- 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 },
|
|
})
|