local function qflist_is_open() local is_open = false for _, win in ipairs(vim.fn.getwininfo()) do if win.quickfix == 1 then is_open = true break end end return is_open end local function toggle_qf_list() if qflist_is_open() then vim.cmd("cclose") else vim.cmd("copen") end end -- movement vim.keymap.set("n", "", "h") vim.keymap.set("n", "", "j") vim.keymap.set("n", "", "k") vim.keymap.set("n", "", "l") vim.keymap.set("n", "", "5zl") vim.keymap.set("n", "", "5zh") vim.keymap.set("n", "H", ":bp") vim.keymap.set("n", "L", ":bn") vim.keymap.set("n", "E", "Neotree toggle reveal position=current") -- buffers vim.keymap.set("n", "BD", "bufdo bd") vim.keymap.set("n", "n", "vnew") -- Prevents the pane from being removed when closing a buffer vim.keymap.set("n", "d", "bpspbnbd") vim.keymap.set("n", "D", "bpspbnbd!") vim.keymap.set("n", "v/", "vsp") vim.keymap.set("n", "v?", "sp") -- tabs vim.keymap.set("n", "", "tabnext") vim.keymap.set("n", "tn", "tabnew") vim.keymap.set("n", "td", "tabclose") -- comments vim.keymap.set("n", "/", "CommentToggle") vim.keymap.set("v", "/", ":'<,'>CommentToggle") -- telescope vim.keymap.set("n", "f", "Telescope find_files find_command=rg,--ignore,--hidden,--files,--iglob=!.git sort_mru=true" ) vim.keymap.set("n", "b", "Telescope buffers") vim.keymap.set("n", "sp", "Telescope live_grep") vim.keymap.set("n", "sh", "Telescope help_tags") vim.keymap.set("n", "sc", "Telescope commands") vim.keymap.set("n", "h", "noh") vim.keymap.set("n", "M", "messages") vim.keymap.set("n", "T", ":term ") vim.keymap.set("n", "m", function() vim.diagnostic.setqflist({ open = true, focus = true }) end) vim.keymap.set("n", "cc", toggle_qf_list) vim.keymap.set("n", "cn", "cnext") vim.keymap.set("n", "cp", "cprev") -- write/quit vim.keymap.set("n", "w", "w") vim.keymap.set("n", "X", "x") vim.keymap.set("n", "q", "q") vim.keymap.set("n", "Q", "qa") -- lsp vim.keymap.set("n", "[d", "lua vim.diagnostic.goto_prev()") vim.keymap.set("n", "]d", "lua vim.diagnostic.goto_next()") vim.keymap.set("n", "K", "lua vim.lsp.buf.hover()") vim.keymap.set("n", "gs", "Telescope lsp_document_symbols") vim.keymap.set("n", "gS", "Telescope lsp_dynamic_workspace_symbols") vim.keymap.set("n", "gD", "lua vim.lsp.buf.declaration()") vim.keymap.set("n", "gd", "lua vim.lsp.buf.definition()") vim.keymap.set("n", "gi", "lua vim.lsp.buf.implementation()") vim.keymap.set("n", "gr", "lua vim.lsp.buf.references()") vim.keymap.set("n", "g.", "lua vim.lsp.buf.code_action()") vim.keymap.set("n", "R", "lua vim.lsp.buf.rename()") vim.keymap.set("n", "F", "Format") -- trouble vim.keymap.set("n", "xx", "Trouble diagnostics toggle", { desc = "Diagnostics (Trouble)" }) vim.keymap.set("n", "xX", "Trouble diagnostics toggle filter.buf=0", { desc = "Buffer Diagnostics (Trouble)" }) vim.keymap.set("n", "cs", "Trouble symbols toggle focus=false win.position=right", { desc = "Symbols (Trouble)" }) vim.keymap.set("n", "cl", "Trouble lsp toggle focus=false", { desc = "LSP Definitions / references / ... (Trouble)" }) vim.keymap.set("n", "xL", "Trouble loclist toggle", { desc = "Location List (Trouble)" }) vim.keymap.set("n", "xQ", "Trouble qflist toggle", { desc = "Quickfix List (Trouble)" }) -- git vim.keymap.set("n", "[g", "Gitsigns prev_hunk") vim.keymap.set("n", "]g", "Gitsigns next_hunk") vim.keymap.set("n", "gg", "LazyGit") vim.keymap.set("n", "gs", "Telescope git_status") vim.keymap.set("n", "gd", "Gitsigns diffthis vertical=true HEAD") vim.keymap.set("n", "Gd", ":Gitsigns diffthis vertical=true ") vim.keymap.set("n", "GD", ":DiffviewOpen ") vim.keymap.set("n", "gh", "DiffviewFileHistory %") vim.keymap.set("n", "gH", "DiffviewFileHistory") vim.keymap.set("n", "gb", "Gitsigns toggle_current_line_blame") vim.keymap.set("n", "Z", "Goyo") vim.keymap.set("v", "gl", function() require("gitlinker").get_buf_range_url("n", { action_callback = require("gitlinker.actions").copy_to_clipboard }) end, { silent = true }) vim.keymap.set("v", "gl", function() require("gitlinker").get_buf_range_url("v", { action_callback = require("gitlinker.actions").copy_to_clipboard }) end, { silent = true }) vim.keymap.set("n", "y", function() local filepath = vim.fn.expand('%:.') local line = vim.fn.line('.') local ref = filepath .. ':' .. line vim.fn.system('pbcopy', ref) vim.notify('Copied: ' .. ref, vim.log.levels.INFO) end, { desc = "Copy filepath:line to clipboard" }) vim.keymap.set("n", "PP", "Lazy") vim.keymap.set("n", "LC", "ConfigLocalEdit") vim.keymap.set("n", "N", "e NOTES.sethetter.md")