require("which-key").setup { plugins = { marks = true, -- shows a list of your marks on ' and ` registers = true, -- shows your registers on " in NORMAL or in INSERT mode -- the presets plugin, adds help for a bunch of default keybindings in Neovim -- No actual key bindings are created presets = { operators = false, -- adds help for operators like d, y, ... motions = false, -- adds help for motions text_objects = false, -- help for text objects triggered after entering an operator windows = true, -- default bindings on nav = true, -- misc bindings to work with windows z = true, -- bindings for folds, spelling and others prefixed with z g = true -- bindings for prefixed with g } }, icons = { breadcrumb = "»", -- symbol used in the command line area that shows your active key combo separator = "➜", -- symbol used between a key and it's label group = "+" -- symbol prepended to a group }, window = { border = "single", -- none, single, double, shadow position = "bottom", -- bottom, top margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] padding = { 2, 2, 2, 2 } -- extra window padding [top, right, bottom, left] }, layout = { height = { min = 4, max = 25 }, -- min and max height of the columns width = { min = 20, max = 50 }, -- min and max width of the columns spacing = 3 -- spacing between columns }, hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate show_help = true -- show help message on the command line when the popup is visible } local opts = { mode = "n", -- NORMAL mode prefix = "", buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings silent = true, -- use `silent` when creating keymaps noremap = true, -- use `noremap` when creating keymaps nowait = false -- use `nowait` when creating keymaps } -- Set leader vim.api.nvim_set_keymap('n', '', '', { noremap = true, silent = true }) vim.g.mapleader = ' ' -- no hl vim.api.nvim_set_keymap('n', 'h', ':set hlsearch!', { noremap = true, silent = true }) -- explorer vim.api.nvim_set_keymap('n', 'e', ':NvimTreeToggle', { noremap = true, silent = true }) -- telescope --vim.api.nvim_set_keymap('n', '', ":lua require 'telescope'.extensions.file_browser.file_browser()", {noremap = true, silent = true}) -- vim.api.nvim_set_keymap('n', '', ":lua require'telescope.builtin'.find_files()", {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', '', ":FzfLua files", { noremap = true, silent = true }) -- dashboard vim.api.nvim_set_keymap('n', ';', ':Dashboard', { noremap = true, silent = true }) -- Comments vim.api.nvim_set_keymap("n", "b/", ":CommentToggle", { noremap = true, silent = true }) vim.api.nvim_set_keymap("v", "b/", ":CommentToggle", { noremap = true, silent = true }) -- close buffer vim.api.nvim_set_keymap("n", "c", ":BufferClose", { noremap = true, silent = true }) -- open projects --vim.api.nvim_set_keymap('n', 'p', ":lua require'telescope'.extensions.project.project{}", {noremap = true, silent = true}) -- vim.api.nvim_set_keymap('n', 'p', ":lua require 'telescope'.extensions.file_browser.file_browser()", {noremap = true, silent = true}) -- TODO create entire treesitter section local mappings = { -- ["/"] = "Comment", -- ["c"] = "Close Buffer", ["e"] = "Explorer", -- ["f"] = "Find File", ["h"] = "No Highlight", a = { name = "+Action", a = { "@:", "execute last command again" } }, b = { name = "+Buffer", n = { "BufferNext", "next buffer" }, p = { "BufferPrevious", "previous buffer" }, q = { "q", "quit" }, s = { "w", "save" }, r = { "e!", "reload" }, d = { "BufferClose", "close buffer" }, z = { "CommentToggle", "toggle comment" }, }, D = { name = "+Diagnostics", t = { "TroubleToggle", "trouble" }, w = { "TroubleToggle lsp_workspace_diagnostics", "workspace" }, d = { "TroubleToggle lsp_document_diagnostics", "document" }, q = { "TroubleToggle quickfix", "quickfix" }, l = { "TroubleToggle loclist", "loclist" }, r = { "TroubleToggle lsp_references", "references" }, }, d = { name = "+Debug", -- b = {"DebugToggleBreakpoint", "Toggle Breakpoint"}, -- c = {"DebugContinue", "Continue"}, -- i = {"DebugStepInto", "Step Into"}, -- o = {"DebugStepOver", "Step Over"}, -- r = {"DebugToggleRepl", "Toggle Repl"}, -- s = {"DebugStart", "Start"} d = { "lua vim.lsp.diagnostic.show_line_diagnostics()", "show diagnostics" }, c = { "lua require'dap'.continue()", "continue" }, b = { ':lua require"dap".toggle_breakpoint()', "Toggle Breadpoint" }, j = { ':lua require"dap".step_over()', "step over" }, k = { ':lua require"dap".step_out()', "step out" }, l = { ':lua require"dap".step_into()', "step into" }, --', ':lua require"dap".continue()') u = { ':lua require"dap".up()', "up" }, -- d = {':lua require"dap".down()', "down"}, _ = { ':lua require"dap".disconnect();require"dap".stop();require"dap".run_last()', "disconnect" }, --r = {':lua require"dap".repl.open({}, "vsplit")l', "repl open"}, i = { ':lua require"dap.ui.variables".visual_hover()', "visual_hover" }, --? = {':lua require"dap.ui.variables".scopes()',"scopes"}, -- e = {':lua require"dap".set_exception_breakpoints({"all"})',"esception bp"}, -- a = {':lua require"debugHelper".attach()',"attach"}, -- A = {':lua require"debugHelper".attachToRemote()',"attach to remote"}, s = { ':lua local widgets=require"dap.ui.widgets";widgets.centered_float(widgets.scopes)', "centered_float" }, }, f = { name = "+File", m = { "lua require'utils'.open_md()", "open a markdown file in vscode" }, s = { "w", "save file" }, t = { "NvimTreeToggle", "toggle nvim tree" }, r = { "RnvimrToggle", "toggle rnvimr" }, y = { "lua require'utils'.yank_filepath()", "copy the file path" }, d = { "lua require'utils'.yank_file_dir()", "copy the file path" }, l = { "NvimTreeFindFile", "find file" }, -- T = {"let @+ = 'go test -v -run='+expand('')", "get current word in go test"}, }, g = { name = "+Git", m = {"Gvdiff master:%", "Diff with master"}, j = { "lua require 'gitsigns'.next_hunk()", "Next Hunk" }, k = { "lua require 'gitsigns'.prev_hunk()", "Prev Hunk" }, l = { "lua require 'gitsigns'.blame_line()", "Blame" }, p = { "lua require 'gitsigns'.preview_hunk()", "Preview Hunk" }, r = { "lua require 'gitsigns'.reset_hunk()", "Reset Hunk" }, R = { "lua require 'gitsigns'.reset_buffer()", "Reset Buffer" }, s = { "lua require 'gitsigns'.stage_hunk()", "Stage Hunk" }, u = { "lua require 'gitsigns'.undo_stage_hunk()", "Undo Stage Hunk", }, o = { "Telescope git_status", "Open changed file" }, b = { "Telescope git_branches", "Checkout branch" }, c = { "Telescope git_commits", "Checkout commit" }, C = { "Telescope git_bcommits", "Checkout commit(for current file)", }, d = { "Gitsigns diffthis HEAD", "Git Diff", }, }, l = { name = "+Language", a = { "Lspsaga code_action", "Code Action" }, A = { "Lspsaga range_code_action", "Selected Action" }, d = { "Telescope lsp_document_diagnostics", "Document Diagnostics" }, D = { "Telescope lsp_workspace_diagnostics", "Workspace Diagnostics" }, f = { "LspFormatting", "Format" }, F = { "Lspsaga lsp_finder", "LSP Finder" }, -- i = {"Telescope lsp_implementations", "implement"}, i = { "lua vim.lsp.buf.implementation()", "implement" }, l = { "lua vim.lsp.buf.hover()", "hover" }, L = { "Lspsaga show_line_diagnostics", "Line Diagnostics" }, k = { ": LspRestart", "restart lsp server" }, n = { "lua vim.lsp.diagnostic.goto_next()", "next diagnostic" }, p = { "lua vim.lsp.diagnostic.goto_prev()", "prev diagnostic" }, P = { "Lspsaga preview_definition", "Preview Definition" }, q = { "Telescope quickfix", "Quickfix" }, r = { "lua vim.lsp.buf.references()", "references" }, R = { "Lspsaga rename", "Rename" }, t = { "LspTypeDefinition", "Type Definition" }, x = { "cclose", "Close Quickfix" }, s = { "Telescope lsp_document_symbols", "Document Symbols" }, S = { "Telescope lsp_dynamic_workspace_symbols", "Workspace Symbols" }, z = { "LspInfo", "Info" }, [","] = { "LspInstallInfo", "LSP servers" } }, p = { name = "Packer", c = { "PackerCompile", "Compile" }, i = { "PackerInstall", "Install" }, s = { "PackerSync", "Sync" }, S = { "PackerStatus", "Status" }, u = { "PackerUpdate", "Update" }, }, q = { name = "quit", q = { "qall", "quit" }, }, s = { name = "+Search", b = { "Telescope git_branches", "Checkout branch" }, -- c = {"Telescope colorscheme", "Colorscheme"}, c = { ":nohl", "no highlight" }, d = { "Telescope lsp_document_diagnostics", "Document Diagnostics" }, D = { "Telescope lsp_workspace_diagnostics", "Workspace Diagnostics" }, f = { "Fzflua files", "Find File" }, m = { "Telescope marks", "Marks" }, M = { "Telescope man_pages", "Man Pages" }, r = { "FzfLua oldfiles", "Open Recent File" }, R = { "Telescope registers", "Registers" }, t = { "FzfLua live_grep", "Text" }, ["#"] = { "FzfLua grep_cword", "Search word under cursor" }, }, S = { name = "+Session", s = { "SessionSave", "Save Session" }, l = { "SessionLoad", "Load Session" }, }, t = { name = "+Test", a = { "TestSuite -v -cover", "TestSuite" }, t = { "lua require('neotest').run.run() ", "TestNearest" }, f = { 'lua require("neotest").run.run(vim.fn.expand("%"))', "TestFile" }, c = { "GoCover", "go coverage" }, C = { "GoCoverClear", "go coverage clear" }, b = { "lua require'dap'.toggle_breakpoint()", "set break point" }, r = { "lua require'dap'.continue()", "continue" }, }, -- extras z = { name = "+Zen", s = { "TZBottom", "toggle status line" }, t = { "TZTop", "toggle tab bar" }, z = { "TZAtaraxis", "toggle zen" }, } } local wk = require("which-key") wk.register(mappings, opts)