123 lines
6.7 KiB
Lua
123 lines
6.7 KiB
Lua
local map = vim.keymap.set
|
|
|
|
-- ========== Basics =========== --
|
|
map("n", ";", ":", { desc = "CMD enter command mode" })
|
|
map("i", "jk", "<ESC>")
|
|
map("n", "<leader>t", "<cmd>terminal<CR>", { desc = "Create new terminal" })
|
|
map("t", "jk", "<C-\\><C-n>")
|
|
map("n", "<leader>h", "<C-w>s | <cmd>terminal<CR> | i");
|
|
|
|
|
|
-- ========== Undotree =========== --
|
|
vim.cmd("packadd nvim.undotree")
|
|
map("n", "<leader>u", require("undotree").open)
|
|
|
|
-- ========== Debug =========== --
|
|
map('n', '<leader>db', '<cmd>DapToggleBreakpoint<CR>', { desc = 'Toggle breakpoint' })
|
|
map('n', '<leader>dr', '<cmd>DapContinue<CR>', { desc = 'Start/continue debug' })
|
|
map('n', '<leader>ds', '<cmd>DapStepOver<CR>', { desc = 'Step over' })
|
|
map('n', '<leader>di', '<cmd>DapStepInto<CR>', { desc = 'Step into' })
|
|
map('n', '<leader>do', '<cmd>DapStepOut<CR>', { desc = 'Step out' })
|
|
map('n', '<leader>dq', '<cmd>DapTerminate<CR>', { desc = 'Stop debug' })
|
|
map('n', '<leader>du', '<cmd>lua require("dapui").toggle()<CR>', { desc = 'Toggle DAP UI' })
|
|
|
|
-- ========== LSP =========== --
|
|
map('n', '<leader>lo', '<cmd>lua vim.diagnostic.open_float()<CR>',
|
|
{ noremap = true, silent = true, desc = 'Open diagnostic' })
|
|
map("n", "<leader>ll", '<cmd>lua vim.lsp.buf.code_action()<CR>',
|
|
{ noremap = true, silent = true, desc = 'Show complete by lsp' })
|
|
map('n', '[l', function() vim.diagnostic.jump({ count = -1 }) end,
|
|
{ noremap = true, silent = true, desc = 'Go to prev diagnostic' })
|
|
map('n', ']l', function() vim.diagnostic.jump({ count = 1 }) end,
|
|
{ noremap = true, silent = true, desc = 'Go to next diagnostic' })
|
|
map('n', '<leader>lt', vim.diagnostic.setloclist,
|
|
{ noremap = true, silent = true, desc = 'Toggle diagnostics list' })
|
|
map("n", "<leader>ls", vim.diagnostic.setloclist, { desc = "LSP diagnostic loclist" })
|
|
map('n', '<leader>lu', function() vim.diagnostic.enable(not vim.diagnostic.is_enabled()) end,
|
|
{ desc = "Toggle Diagnostics" })
|
|
map("n", "<Esc>", "<cmd>noh<CR>", { desc = "general clear highlights" })
|
|
|
|
-- ========== Sessions ============= --
|
|
map("n", "<leader>ss", "<cmd>:SessionSave<CR>", { noremap = true, silent = true })
|
|
map("n", "<leader>sl", "<cmd>:SessionLoad<CR>", { noremap = true, silent = true })
|
|
map("n", "<leader>st", "<cmd>:Telescope persisted<CR>", { noremap = true, silent = true })
|
|
|
|
-- ========== Window moves ============= --
|
|
map("n", "<C-h>", "<C-w>h", { desc = "switch window left" })
|
|
map("n", "<C-l>", "<C-w>l", { desc = "switch window right" })
|
|
map("n", "<C-j>", "<C-w>j", { desc = "switch window down" })
|
|
map("n", "<C-k>", "<C-w>k", { desc = "switch window up" })
|
|
|
|
-- ========== Line moves ============= --
|
|
map("i", "<C-b>", "<ESC>^i", { desc = "move beginning of line" })
|
|
map("i", "<C-e>", "<End>", { desc = "move end of line" })
|
|
map("i", "<C-h>", "<Left>", { desc = "move left" })
|
|
map("i", "<C-l>", "<Right>", { desc = "move right" })
|
|
map("i", "<C-j>", "<Down>", { desc = "move down" })
|
|
map("i", "<C-k>", "<Up>", { desc = "move up" })
|
|
|
|
-- ========== Comments ============= --
|
|
map("n", "<leader>/", "gcc", { desc = "toggle comment", remap = true })
|
|
map("v", "<leader>/", "gc", { desc = "toggle comment", remap = true })
|
|
|
|
-- ========== Neotree ============= --
|
|
map("n", "<C-n>", "<cmd>Neotree toggle<CR>", { desc = "nvimtree toggle window" })
|
|
map("n", "<leader>e", "<cmd>Neotree focus<CR>", { desc = "nvimtree focus window" })
|
|
|
|
-- ========== Telescope ============= --
|
|
map("n", "<leader>fw", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" })
|
|
map("n", "<leader>fb", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" })
|
|
map("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" })
|
|
map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" })
|
|
map("n", "<leader>fo", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" })
|
|
map("n", "<leader>fz", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" })
|
|
map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" })
|
|
map("n", "<leader>gt", "<cmd>Telescope git_status<CR>", { desc = "telescope git status" })
|
|
map("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" })
|
|
map("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" })
|
|
map("n", "<leader>fa", "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>",
|
|
{ desc = "telescope find all files" })
|
|
|
|
-- ========== Which-key ============= --
|
|
map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" })
|
|
|
|
-- ========== Buffers ============= --
|
|
map("n", "<leader>x", function()
|
|
local bufnr = vim.api.nvim_get_current_buf()
|
|
local buftype = vim.bo[bufnr].buftype
|
|
local modified = vim.bo[bufnr].modified
|
|
|
|
if buftype == 'terminal' then
|
|
vim.cmd('bp | sp | bn | bd!')
|
|
return
|
|
end
|
|
|
|
if modified then
|
|
vim.notify("Changes not saved")
|
|
else
|
|
vim.cmd('bp | sp | bn | bd')
|
|
end
|
|
end, { desc = "Close buffer" })
|
|
map("n", "<leader>n", "<cmd>enew<CR>", { desc = "Create buffer" })
|
|
map("n", "<tab>", "<cmd>BufferLineCycleNext<CR>", { desc = "Go to next buffer" })
|
|
map("n", "<S-tab>", "<cmd>BufferLineCyclePrev<CR>", { desc = "Go to prev buffer" })
|
|
map("n", "<leader>bt", "<cmd>BufferLineGroupToggle tests<CR>", { desc = "Toggle 'tests' group" })
|
|
map("n", "<leader>bc", "<cmd>BufferLineGroupToggle code<CR>", { desc = "Toggle 'code' group" })
|
|
map("n", "<leader>bp", "<cmd>BufferLineGroupToggle tornado<CR>", { desc = "Toggle 'tornado' group" })
|
|
map("n", "<leader>bg", "<cmd>BufferLineGroupToggle gornado<CR>", { desc = "Toggle 'gornado' group" })
|
|
map("n", "<leader>br", "<cmd>BufferRename<CR>", { desc = "Rename buffer label" })
|
|
|
|
|
|
-- ========== Git ============= --
|
|
map("n", "<leader>gb", "<cmd>Gitsigns blame<CR>", { desc = "Open blame for file" })
|
|
map("n", "<leader>gl", "<cmd>Gitsigns blame<CR>", { desc = "Open blame for file" })
|
|
map("n", "<leader>gco", "<cmd>GitConflictChooseOurs<CR>", { desc = "Select the current changes" })
|
|
map("n", "<leader>gct", "<cmd>GitConflictChooseTheirs<CR>", { desc = "Select the incoming changes" })
|
|
map("n", "<leader>gcb", "<cmd>GitConflictChooseBoth<CR>", { desc = "Seletct both changes" })
|
|
map("n", "<leader>gcn", "<cmd>GitConflictNextConflict<CR>", { desc = "Move to the next conflict" })
|
|
map("n", "<leader>gcp", "<cmd>GitConflictPrevConflict<CR>", { desc = "Move to the previous conflict" })
|
|
map("n", "<leader>ghn", "<cmd>Gitsigns preview_hunk<CR>", { desc = "Show hunk in normal mode" })
|
|
map("n", "<leader>ghi", "<cmd>Gitsigns preview_hunk_inline<CR>", { desc = "Show hunk inline" })
|
|
map("n", "<leader>gd", "<cmd>Gitsigns diffthis<CR>", { desc = "Show diff of buffer" })
|
|
map("n", "<leader>gs", "<cmd>Gitsigns stage_buffer<CR>", { desc = "Stage this buffer" })
|
|
map("n", "<leader>gu", "<cmd>Gitui<CR>", { desc = "Stage this buffer" })
|