-- highlighting yanked regions local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) vim.api.nvim_create_autocmd('TextYankPost', { callback = function() vim.highlight.on_yank() end, group = highlight_group, }) -- setup keymap function local m = require 'mapx'.setup { global = true, whichkey = true } -- setup keymap groups m.nname("g", "LSP: goto") m.cname("w", "Write") m.cname("w!", "Write: overwrite") m.nname("g", "Git") m.nname("gd", "Git: diff") m.nname("s", "Substitute") m.nname("t", "Terminal") -- unmap unwanted commands m.nnoremap("Zt", '') m.nnoremap("ZT", '') m.nnoremap("", '') m.inoremap("", '') m.nnoremap("", '') m.inoremap("", '') m.inoremap("", '') m.inoremap("", '') m.inoremap("", '') m.inoremap("", '') m.inoremap("", '') m.inoremap("", '') m.nnoremap("", '') m.inoremap("", '') m.nnoremap("", '') m.inoremap("", '') m.nnoremap("", '') m.inoremap("", '') m.nnoremap("", '') -- shortcut for split navigation m.nnoremap("", 'h', 'Navigation: go to left split') m.nnoremap("", 'j', 'Navigation: go to lower split') m.nnoremap("", 'k', 'Navigation: go to upper split') m.nnoremap("", 'l', 'Navigation: go to right split') -- remap for dealing with word wrap m.nmap('j', "v:count == 0 ? 'gj' : 'j'", { "expr", "silent" }, 'Navigation: go down in wrapped lines') m.nmap('k', "v:count == 0 ? 'gk' : 'k'", { "expr", "silent" }, 'Navigation: go up in wrapped lines') -- compiler for languages m.nnoremap("c", ':w! | !compiler %', 'Compile: current file') -- save file as sudo on files that require root permission m.cnoremap("w!!", 'execute "silent! write !sudo tee % >/dev/null" edit!', 'Write: overwrite file over with sudo') -- easy substitution for whole file and line, visual mode m.nnoremap("sa", ':%s//g', 'Substitute: free form') m.nnoremap("ss", ':%s/\\<\\>//g', 'Substitute: word under cursor') -- stevearc/aerial.nvim m.nmap('', ':AerialToggle!', 'CTags: toggle') -- nvim-tree/nvim-tree.lua m.nmap("", ':NvimTreeToggle toggle', 'File tree: toggle') -- numtostr/fterm.nvim m.nnoremap("tt", require("FTerm").toggle, 'Terminal: open') m.tnoremap("tt", require("FTerm").toggle, 'Terminal: open') local lazygit = require("FTerm"):new({ cmd = 'lazygit', }) m.nnoremap("gt", function() lazygit:toggle() end, 'Git: open lazygit') m.tnoremap("gt", function() lazygit:toggle() end, 'Git: open lazygit') m.nnoremap("tg", function() lazygit:toggle() end, 'Terminal: open lazygit') m.tnoremap("tg", function() lazygit:toggle() end, 'Terminal: open lazygit') -- sindrets/diffview.nvim m.nmap("gdo", ":DiffviewOpen", "Git: open diff") m.nmap("gdc", ":DiffviewClose", "Git: close diff") -- folke/trouble.nvim m.nmap("x", ":TroubleToggle", "LSP: toggle error list") -- hrsh7th/nvim-cmp m.nnoremap("gd", vim.lsp.buf.definition, "LSP: goto definition") m.nnoremap("gD", vim.lsp.buf.declaration, "LSP: goto declaration") m.nnoremap("gi", vim.lsp.buf.implementation, "LSP: list implementation") m.nnoremap("gr", vim.lsp.buf.references, "LSP: list references") m.nnoremap("gy", vim.lsp.buf.type_definition, "LSP: goto type definition") m.nnoremap("K", vim.lsp.buf.hover, "LSP: show documentation") m.nnoremap("", function() require("conform").format({ async = true, lsp_fallback = true }) end, "LSP: format") -- filipdutescu/renamer.nvim m.nnoremap("", require("renamer").rename, "LSP: rename") -- nvim-telescope/telescope.nvim m.nnoremap("", ':Telescope find_files', "Telescope: find files") -- kamykn/spelunker.vim m.nnoremap("", ':call spelunker#toggle()', "Spelling: toggle spell check") -- kevinhwang91/nvim-ufo m.nnoremap("K", function() local winid = require('ufo').peekFoldedLinesUnderCursor() if not winid then vim.lsp.buf.hover() end end, "LSP: peek folded section") -- kevinhwang91/nvim-hlslens m.nnoremap("n", [[execute('normal! ' . v:count1 . 'n')lua require('hlslens').start()]], 'silent', "Search: search forward") m.nnoremap("N", [[execute('normal! ' . v:count1 . 'N')lua require('hlslens').start()]], 'silent', "Search: search backwards")