121 lines
5.7 KiB
Lua
Executable File
121 lines
5.7 KiB
Lua
Executable File
local wk = require("which-key")
|
|
|
|
local function wkAdd(keys, func, desc, mode)
|
|
mode = mode or "n"
|
|
wk.add({ keys, func, desc = desc, mode = mode })
|
|
end
|
|
|
|
local function wkGroup(keys, group, modes)
|
|
modes = modes or { "n" }
|
|
wk.add({ keys, group = group, mode = modes })
|
|
end
|
|
|
|
-- NOTE misc keymaps
|
|
wkAdd("jj", "<esc>", "Exit insert mode", "i")
|
|
wkAdd("<leader><space>", "<cmd>nohl<cr>", "Clear search")
|
|
wkAdd("<leader>n", "o<esc>", "Add new line")
|
|
wkAdd("<leader>N", "O<esc>", "Add new line above")
|
|
wkAdd("<leader>+", "<C-a>", "Increment number by 1")
|
|
wkAdd("<leader>-", "<C-x>", "Decrement number by 1")
|
|
wkAdd("<leader>W", "<C-w", "Window management")
|
|
wkAdd("<leader>ee", "<cmd>Oil --float<cr>", "Open file manager")
|
|
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
|
|
|
|
-- NOTE Surround
|
|
wkGroup("<leader>w", "Wrap (quotes, brackets)")
|
|
|
|
-- NOTE search
|
|
wkGroup("<leader>s", "Search")
|
|
wkAdd("<leader>sf", "<cmd>FzfLua files<cr>", "Search files")
|
|
wkAdd("<leader>sz", "<cmd>FzfLua builtin<cr>", "Search builtins")
|
|
wkAdd("<leader>sb", "<cmd>FzfLua buffers<cr>", "Search buffers")
|
|
wkAdd("<leader>sw", "<cmd>FzfLua live_grep<cr>", "Search word")
|
|
wkAdd("<leader>s/", "<cmd>FzfLua grep_curbuf<cr>", "Search in current buffer")
|
|
wkAdd("<leader>ss", "<cmd>FzfLua lsp_document_symbols<cr>", "Search document symbols")
|
|
wkAdd("<leader>sS", "<cmd>FzfLua lsp_live_workspace_symbols<cr>", "Search workspace symbols")
|
|
|
|
-- NOTE files and buffers
|
|
wkGroup("<leader>b", "Buffers")
|
|
wkAdd("<leader>bw", "<cmd>w!<cr>", "Save current buffer")
|
|
wkAdd("<leader>bW", "<cmd>wa!<cr>", "Save all buffers")
|
|
wkAdd("<leader>bq", "<cmd>wq!<cr>", "Save and close current buffer")
|
|
wkAdd("<leader>bQ", "<cmd>wqa!<cr>", "Save and close all buffers")
|
|
wkAdd("<leader>bx", "<cmd>q!<cr>", "Exit current buffer without saving")
|
|
wkAdd("<leader>bX", "<cmd>qa!<cr>", "Exit session without saving")
|
|
wkAdd("<leader>bn", "]b", "Go to next buffer")
|
|
wkAdd("<leader>bp", "[b", "Go to prev buffer")
|
|
|
|
-- NOTE Diagnostics
|
|
wkGroup("<leader>d", "Diagnostics")
|
|
wkAdd("<leader>dd", function()
|
|
vim.diagnostic.open_float()
|
|
end, "Show line diagnostics")
|
|
wkAdd("<leader>dD", "<cmd>FzfLua diagnostics_document", "Show document diagnostics")
|
|
wkAdd("<leader>dW", "<cmd>FzfLua lsp_workspace_diagnostics", "Show workspace diagnostics")
|
|
wkAdd("<leader>dn", function()
|
|
vim.diagnostic.goto_next()
|
|
end, "Go to next diagnostic")
|
|
wkAdd("<leader>dp", function()
|
|
vim.diagnostic.goto_prev()
|
|
end, "Go to next diagnostic")
|
|
|
|
-- NOTE Terminal
|
|
wkGroup("<leader>t", "Terminal")
|
|
wkAdd("<leader>tt", "<cmd>ToggleTerm 1 name='dev' direction='float'<cr>", "Toggle terminal")
|
|
wkAdd("<leader>ta", "<cmd>ToggleTermToggleAll<cr>", "Toggle all terminals")
|
|
wkAdd("<leader>th", "<cmd>ToggleTerm 1 name='dev' direction='horizontal'<cr>", "Open horizontal terminal")
|
|
wkAdd("<leader>tv", "<cmd>ToggleTerm 1 name='dev' direction='vertical'<cr>", "Open vertical terminal")
|
|
wkAdd("<leader>tp", "<cmd>ToggleTerm 80 name='Posting' direction='float'<cr>", "Open Posting CLI")
|
|
wkAdd("<leader>tP", "<cmd>TermExec 80 name='Posting' cmd='posting' direction='float'<cr>", "Init Posting CLI")
|
|
|
|
-- NOTE Substitute
|
|
local substitute = require("substitute")
|
|
wkAdd("s", substitute.operator, "Substitute with motion")
|
|
wkAdd("ss", substitute.line, "Substitute line")
|
|
wkAdd("S", substitute.eol, "Substitute to end of line")
|
|
wkAdd("s", substitute.visual, "Substitute in visual mode", "x")
|
|
|
|
wk.add({
|
|
{ -- Flutter
|
|
mode = { "n" },
|
|
{ "<leader>F", group = "Flutter" },
|
|
-- { "<leader>Ff", "<cmd>Telescope flutter commands<cr>", desc = "Show flutter commands" },
|
|
{ "<leader>Fo", "<cmd>FlutterOutlineToggle<cr>", desc = "Show flutter outline" },
|
|
{ "<leader>Fd", "<cmd>FlutterDevices<cr>", desc = "Show devices" },
|
|
{ "<leader>Fe", "<cmd>FlutterEmulators<cr>", desc = "Show emulators" },
|
|
{ "<leader>Fq", "<cmd>FlutterQuit<cr>", desc = "Quit flutter" },
|
|
{ "<leader>Fr", "<cmd>FlutterReload<cr>", desc = "Hot reload" },
|
|
{ "<leader>FR", "<cmd>FlutterRestart<cr>", desc = "Hot restart" },
|
|
{ "<leader>Fg", "<cmd>FlutterPubGet<cr>", desc = "Pub get" },
|
|
{ "<leader>Fc", "<cmd>FlutterLogClear<cr>", desc = "Clear logs" },
|
|
{ "<leader>FF", "<cmd>FlutterRun<cr>", desc = "Flutter run!" },
|
|
},
|
|
})
|
|
|
|
-- -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
|
|
-- -- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
|
|
-- -- is not what someone will guess without a bit more experience.
|
|
-- key.set('t', '<leader><Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
|
|
--
|
|
-- -- TIP: Disable arrow keys in normal mode
|
|
-- -- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
|
|
-- -- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
|
|
-- -- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
|
|
-- -- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
|
|
--
|
|
-- -- Keybinds to make split navigation easier.
|
|
-- -- Use CTRL+<hjkl> to switch between windows
|
|
-- -- See `:help wincmd` for a list of all window commands
|
|
-- vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
|
|
-- vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
|
|
-- vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
|
|
-- vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
|
|
--
|
|
-- -- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes
|
|
-- -- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
|
|
-- -- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
|
|
-- -- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" })
|
|
-- -- vim.keymap.set("n", "<C-S-k>", "<C-w>K", { desc = "Move window to the upper" })
|
|
--
|
|
-- end
|