-- Set leader key to space
[Link] = " "
local keymap = [Link]
-- General keymaps
[Link]("i", "jk", "<ESC>") -- exit insert mode with jk
[Link]("i", "ii", "<ESC>") -- exit insert mode with ii
[Link]("n", "<leader>wq", ":wq<CR>") -- save and quit
[Link]("n", "<leader>qq", ":q!<CR>") -- quit without
saving
[Link]("n", "<leader>ww", ":w<CR>") -- save
[Link]("n", "gx", ":!open <c-r><c-a><CR>") -- open URL
under cursor
-- Split window management
[Link]("n", "<leader>sv", "<C-w>v") -- split window
vertically
[Link]("n", "<leader>sh", "<C-w>s") -- split window
horizontally
[Link]("n", "<leader>se", "<C-w>=") -- make split windows
equal width
[Link]("n", "<leader>sx", ":close<CR>") -- close split
window
[Link]("n", "<leader>sj", "<C-w>-") -- make split window
height shorter
[Link]("n", "<leader>sk", "<C-w>+") -- make split windows
height taller
[Link]("n", "<leader>sl", "<C-w>>5") -- make split
windows width bigger
[Link]("n", "<leader>sh", "<C-w><5") -- make split
windows width smaller
-- Tab management
[Link]("n", "<leader>to", ":tabnew<CR>") -- open a new
tab
[Link]("n", "<leader>tx", ":tabclose<CR>") -- close a tab
[Link]("n", "<leader>tn", ":tabn<CR>") -- next tab
[Link]("n", "<leader>tp", ":tabp<CR>") -- previous tab
-- Diff keymaps
[Link]("n", "<leader>cc", ":diffput<CR>") -- put diff
from current to other during diff
[Link]("n", "<leader>cj", ":diffget 1<CR>") -- get diff
from left (local) during merge
[Link]("n", "<leader>ck", ":diffget 3<CR>") -- get diff
from right (remote) during merge
[Link]("n", "<leader>cn", "]c") -- next diff hunk
[Link]("n", "<leader>cp", "[c") -- previous diff hunk
-- Quickfix keymaps
[Link]("n", "<leader>qo", ":copen<CR>") -- open quickfix
list
[Link]("n", "<leader>qf", ":cfirst<CR>") -- jump to first
quickfix list item
[Link]("n", "<leader>qn", ":cnext<CR>") -- jump to next
quickfix list item
[Link]("n", "<leader>qp", ":cprev<CR>") -- jump to prev
quickfix list item
[Link]("n", "<leader>ql", ":clast<CR>") -- jump to last
quickfix list item
[Link]("n", "<leader>qc", ":cclose<CR>") -- close
quickfix list
-- Vim-maximizer
[Link]("n", "<leader>sm", ":MaximizerToggle<CR>") --
toggle maximize tab
-- Nvim-tree
[Link]("n", "<leader>ee", ":NvimTreeToggle<CR>") --
toggle file explorer
[Link]("n", "<leader>er", ":NvimTreeFocus<CR>") -- toggle
focus to file explorer
[Link]("n", "<leader>ef", ":NvimTreeFindFile<CR>") --
find file in file explorer
-- Telescope
[Link]('n', '<leader>ff',
require('[Link]').find_files, {})
[Link]('n', '<leader>fg',
require('[Link]').live_grep, {})
[Link]('n', '<leader>fb',
require('[Link]').buffers, {})
[Link]('n', '<leader>fh',
require('[Link]').help_tags, {})
[Link]('n', '<leader>fs',
require('[Link]').current_buffer_fuzzy_find, {})
[Link]('n', '<leader>fo',
require('[Link]').lsp_document_symbols, {})
[Link]('n', '<leader>fi',
require('[Link]').lsp_incoming_calls, {})
[Link]('n', '<leader>fm', function()
require('[Link]').treesitter({default_text=":metho
d:"}) end)
-- Git-blame
[Link]("n", "<leader>gb", ":GitBlameToggle<CR>") --
toggle git blame
-- Harpoon
[Link]("n", "<leader>ha",
require("[Link]").add_file)
[Link]("n", "<leader>hh",
require("[Link]").toggle_quick_menu)
[Link]("n", "<leader>h1", function()
require("[Link]").nav_file(1) end)
[Link]("n", "<leader>h2", function()
require("[Link]").nav_file(2) end)
[Link]("n", "<leader>h3", function()
require("[Link]").nav_file(3) end)
[Link]("n", "<leader>h4", function()
require("[Link]").nav_file(4) end)
[Link]("n", "<leader>h5", function()
require("[Link]").nav_file(5) end)
[Link]("n", "<leader>h6", function()
require("[Link]").nav_file(6) end)
[Link]("n", "<leader>h7", function()
require("[Link]").nav_file(7) end)
[Link]("n", "<leader>h8", function()
require("[Link]").nav_file(8) end)
[Link]("n", "<leader>h9", function()
require("[Link]").nav_file(9) end)
-- Vim REST Console
[Link]("n", "<leader>xr", ":call VrcQuery()<CR>") -- Run
REST query
-- LSP
[Link]('n', '<leader>gg', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gd', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gD', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gi', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gt', '<cmd>lua
[Link].type_definition()<CR>')
[Link]('n', '<leader>gr', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gs', '<cmd>lua
[Link].signature_help()<CR>')
[Link]('n', '<leader>rr', '<cmd>lua
[Link]()<CR>')
[Link]('n', '<leader>gf', '<cmd>lua
[Link]({async = true})<CR>')
[Link]('v', '<leader>gf', '<cmd>lua
[Link]({async = true})<CR>')
[Link]('n', '<leader>ga', '<cmd>lua
[Link].code_action()<CR>')
[Link]('n', '<leader>gl', '<cmd>lua
[Link].open_float()<CR>')
[Link]('n', '<leader>gp', '<cmd>lua
[Link].goto_prev()<CR>')
[Link]('n', '<leader>gn', '<cmd>lua
[Link].goto_next()<CR>')
[Link]('n', '<leader>tr', '<cmd>lua
[Link].document_symbol()<CR>')
[Link]('i', '<C-Space>', '<cmd>lua
[Link]()<CR>')
-- Debugging
[Link]("n", "<leader>bb", "<cmd>lua
require'dap'.toggle_breakpoint()<cr>")
[Link]("n", "<leader>bc", "<cmd>lua
require'dap'.set_breakpoint([Link]('Breakpoint
condition: '))<cr>")
[Link]("n", "<leader>bl", "<cmd>lua
require'dap'.set_breakpoint(nil, nil, [Link]('Log point
message: '))<cr>")
[Link]("n", '<leader>br', "<cmd>lua
require'dap'.clear_breakpoints()<cr>")
[Link]("n", '<leader>ba', '<cmd>Telescope dap
list_breakpoints<cr>')
[Link]("n", "<leader>dc", "<cmd>lua
require'dap'.continue()<cr>")
[Link]("n", "<leader>dj", "<cmd>lua
require'dap'.step_over()<cr>")
[Link]("n", "<leader>dk", "<cmd>lua
require'dap'.step_into()<cr>")
[Link]("n", "<leader>do", "<cmd>lua
require'dap'.step_out()<cr>")
[Link]("n", '<leader>dd', function()
require('dap').disconnect(); require('dapui').close(); end)
[Link]("n", '<leader>dt', function()
require('dap').terminate(); require('dapui').close(); end)
[Link]("n", "<leader>dr", "<cmd>lua
require'dap'.[Link]()<cr>")
[Link]("n", "<leader>dl", "<cmd>lua
require'dap'.run_last()<cr>")
[Link]("n", '<leader>di', function() require
"[Link]".hover() end)
[Link]("n", '<leader>d?', function() local widgets =
require "[Link]";
widgets.centered_float([Link]) end)
[Link]("n", '<leader>df', '<cmd>Telescope dap
frames<cr>')
[Link]("n", '<leader>dh', '<cmd>Telescope dap
commands<cr>')
[Link]("n", '<leader>de', function()
require('[Link]').diagnostics({default_text=":E:"}
) end)