--- Plugin-specific keymaps. Centralizes keybindings for third-party plugins: NvimTree, Comment, --- LazyGit, DAP/DAP-UI, Trouble, ToggleTerm, sessions, formatting, --- Substitute, Surround, LeetCode, Telescope/safe_files, database clients, --- text wrapping, and auto-wrap controls. --- @module keymaps.plugins local keymap = vim.keymap -- ============================================================================= -- PLUGIN KEYMAPS -- ============================================================================= --- Toggle the NvimTree file explorer sidebar. keymap.set("n", "e", "NvimTreeToggle", { desc = "Toggle file explorer" }) --- Buffer management — cycle through listed buffers with Shift+L / Shift+H. keymap.set("n", "", ":bnext", { noremap = true, silent = true }) keymap.set("n", "", ":bprevious", { noremap = true, silent = true }) --- Comment.nvim — toggle line/block comments in normal and visual mode. keymap.set( "n", "/", "lua require('Comment.api').toggle_current_linewise()", { desc = "Toggle comment" } ) keymap.set( "v", "/", "lua require('Comment.api').toggle_linewise_op(vim.fn.visualmode())", { desc = "Toggle comment" } ) --- Open LazyGit in a floating terminal. keymap.set("n", "gg", "LazyGit", { desc = "LazyGit" }) --- Trouble — diagnostics, workspace errors, location list, and quickfix viewer. keymap.set("n", "Xx", "TroubleToggle", { desc = "Toggle Trouble" }) keymap.set("n", "Xw", "TroubleToggle workspace_diagnostics", { desc = "Workspace diagnostics" }) keymap.set("n", "Xd", "TroubleToggle document_diagnostics", { desc = "Document diagnostics" }) keymap.set("n", "Xl", "TroubleToggle loclist", { desc = "Location list" }) keymap.set("n", "Xq", "TroubleToggle quickfix", { desc = "Quickfix list" }) --- ToggleTerm — open terminals as float, horizontal, or vertical splits. keymap.set("n", "tf", "ToggleTerm direction=float", { desc = "ToggleTerm float" }) keymap.set( "n", "th", "ToggleTerm size=10 direction=horizontal", { desc = "ToggleTerm horizontal split" } ) keymap.set("n", "tv", "ToggleTerm size=80 direction=vertical", { desc = "ToggleTerm vertical split" }) --- Session management — save/restore sessions (uppercase S/R to avoid substitute conflicts). keymap.set("n", "sS", "SessionSave", { desc = "Session: Save" }) keymap.set("n", "sR", "SessionRestore", { desc = "Session: Restore" }) --- Format the current buffer using the attached LSP formatter. --- TODO: add format buffer keymap --- keymap.set("n", "f", "lua vim.lsp.buf.format()", { desc = "Format buffer" }) --- Substitute.nvim — operator, line, and end-of-line substitution. keymap.set("n", "sub", "lua require('substitute').operator()", { desc = "Substitute: With motion" }) keymap.set("n", "sl", "lua require('substitute').line()", { desc = "Substitute: Line" }) keymap.set("n", "S", "lua require('substitute').eol()", { desc = "Substitute: To end of line" }) --- nvim-surround — add, delete, and replace surrounding pairs. keymap.set("n", "sa", "lua require('nvim-surround').surround_add()", { desc = "Add surrounding" }) keymap.set( "n", "sd", "lua require('nvim-surround').surround_delete()", { desc = "Delete surrounding" } ) keymap.set( "n", "sr", "lua require('nvim-surround').surround_replace()", { desc = "Replace surrounding" } ) -- Git conflicts (moved to lua/cargdev/core/keymaps/gitconflict.lua) --- Run project command via project_commands module. keymap.set( "n", "p", "lua require('cargdev.core.function.project_commands').run_project()", { desc = "Run project" } ) --- Insert a `console.log()` snippet on the line below and enter insert mode. keymap.set("n", "cl", "oconsole.log()i", { desc = "Add console.log" }) --- Open TODO comments in the Trouble panel. keymap.set("n", "xt", "TodoTrouble", { desc = "Open todos in trouble" }) --- nvim-surround classic-style mappings (ys, yss, yS, ySS). keymap.set("n", "ys", "lua require('nvim-surround').surround_add()", { desc = "Add surrounding" }) keymap.set("n", "yss", "lua require('nvim-surround').surround_add()", { desc = "Add surrounding to line" }) keymap.set("n", "yS", "lua require('nvim-surround').surround_add()", { desc = "Add surrounding on new lines" }) keymap.set( "n", "ySS", "lua require('nvim-surround').surround_add()", { desc = "Add surrounding to line on new lines" } ) --- Comment.nvim classic-style mappings (gc, gcc, gco, gcO, gcA, gb, gbc). keymap.set("n", "gc", "lua require('Comment.api').toggle_current_linewise()", { desc = "Toggle comment" }) keymap.set( "n", "gcc", "lua require('Comment.api').toggle_current_linewise()", { desc = "Toggle current line comment" } ) keymap.set("n", "gco", "lua require('Comment.api').insert_below()", { desc = "Insert comment below" }) keymap.set("n", "gcO", "lua require('Comment.api').insert_above()", { desc = "Insert comment above" }) keymap.set("n", "gcA", "lua require('Comment.api').insert_eol()", { desc = "Insert comment at end of line" }) keymap.set( "n", "gb", "lua require('Comment.api').toggle_current_blockwise()", { desc = "Toggle block comment" } ) keymap.set( "n", "gbc", "lua require('Comment.api').toggle_current_blockwise()", { desc = "Toggle current block comment" } ) -- ============================================================================= -- TELESCOPE KEYMAPS (Enhanced with safe file searching) -- ============================================================================= --- Unfiltered Telescope file search (may include binaries — use with caution). keymap.set("n", "fF", "Telescope find_files", { desc = "Find files (all)" }) -- ============================================================================= -- DATABASE KEYMAPS (Temporarily disabled to prevent conflicts) -- ============================================================================= -- -- Dadbod UI -- keymap.set("n", "du", "DBUI", { desc = "Open Database UI" }) -- keymap.set("n", "dul", "DBUILastQueryInfo", { desc = "Show last query info" }) -- keymap.set("n", "duf", "DBUIFindBuffer", { desc = "Find database buffer" }) -- -- Database connections -- keymap.set("n", "dua", "DBUIAddConnection", { desc = "Add database connection" }) -- keymap.set("n", "dur", "DBUIRenameBuffer", { desc = "Rename database buffer" }) -- keymap.set("n", "dud", "DBUIRefresh", { desc = "Refresh database" }) -- -- Database queries -- keymap.set("n", "due", "DBExecute", { desc = "Execute SQL query" }) -- keymap.set("n", "dus", "DBSelect", { desc = "Select SQL query" }) -- keymap.set("n", "dui", "DBInsert", { desc = "Insert SQL query" }) -- keymap.set("n", "duu", "DBUpdate", { desc = "Update SQL query" }) -- keymap.set("n", "dudel", "DBDelete", { desc = "Delete SQL query" }) -- -- Database table operations -- keymap.set("n", "dut", "DBUITableCreate", { desc = "Create table" }) -- keymap.set("n", "duti", "DBUITableIndex", { desc = "Show table indexes" }) -- keymap.set("n", "dutc", "DBUITableCount", { desc = "Count table rows" }) -- keymap.set("n", "dutx", "DBUITableExplain", { desc = "Explain table query" }) -- keymap.set("n", "dutz", "DBUITableSize", { desc = "Show table size" }) -- -- SQL formatting -- keymap.set("n", "duf", "SQLFormat", { desc = "Format SQL query" }) -- -- Database utilities -- keymap.set("n", "duh", "DBUIHideNotifications", { desc = "Hide database notifications" }) -- keymap.set("n", "dus", "DBUISaveBuffer", { desc = "Save database buffer" }) -- keymap.set("n", "dul", "DBUILoadBuffer", { desc = "Load database buffer" }) --- Redis CLI — open, list keys, show info. keymap.set("n", "rds", "Redis", { desc = "Open Redis" }) keymap.set("n", "rdk", "RedisKeys", { desc = "Show Redis keys" }) keymap.set("n", "rdi", "RedisInfo", { desc = "Show Redis info" }) --- MongoDB — open shell, connect, disconnect. keymap.set("n", "mdb", "MongoDB", { desc = "Open MongoDB" }) keymap.set("n", "mdc", "MongoDBConnect", { desc = "Connect to MongoDB" }) keymap.set("n", "mdd", "MongoDBDisconnect", { desc = "Disconnect from MongoDB" }) -- ============================================================================= -- NATIVE AUTO WRAPPER KEYMAPS -- ============================================================================= --- Text wrapping controls — toggle wrap, linebreak, and column guide. keymap.set("n", "tw", "set wrap!", { desc = "Toggle line wrapping" }) keymap.set("n", "tl", "set linebreak!", { desc = "Toggle line break" }) keymap.set("n", "tx", "set colorcolumn=80", { desc = "Show 80 char column" }) keymap.set("n", "tH", "set colorcolumn=", { desc = "Hide column guide" }) --- Format text using native Neovim `gq` command (paragraph, selection, file). keymap.set("n", "tpg", "gqap", { desc = "Format paragraph" }) keymap.set("v", "tf", "gq", { desc = "Format selection" }) keymap.set("n", "tF", "gggqG", { desc = "Format entire file" }) --- Text width adjustments — set to 80, 100, 120, or disable (0). keymap.set("n", "t80", "set textwidth=80", { desc = "Set text width to 80" }) keymap.set("n", "t100", "set textwidth=100", { desc = "Set text width to 100" }) keymap.set("n", "t120", "set textwidth=120", { desc = "Set text width to 120" }) keymap.set("n", "t0", "set textwidth=0", { desc = "Disable text width" }) --- Auto-wrap controls — toggle `formatoptions` flags for text and comments. keymap.set("n", "ta", "set formatoptions+=t", { desc = "Enable auto-wrap text" }) keymap.set("n", "tA", "set formatoptions-=t", { desc = "Disable auto-wrap text" }) keymap.set("n", "tc", "set formatoptions+=c", { desc = "Enable auto-wrap comments" }) keymap.set("n", "tC", "set formatoptions-=c", { desc = "Disable auto-wrap comments" }) --- Indent and wrap — toggle break indent and show/hide break indicator. keymap.set("n", "ti", "set breakindent!", { desc = "Toggle break indent" }) keymap.set("n", "ts", "set showbreak=↪ ", { desc = "Show break indicator" }) keymap.set("n", "tS", "set showbreak=", { desc = "Hide break indicator" })