local function map(mode, bind, cmd, opts) opts = opts or {noremap = true, silent = true} if type(bind) == 'table' then for i in pairs(bind) do vim.keymap.set(mode, bind[i], cmd, opts) end elseif type(bind) == 'string' then vim.keymap.set(mode, bind, cmd, opts) else vim.notify('-- Invalid bind for keymap:\nvim.keymap.set(\'' .. mode .. '\', ' .. bind .. ', \'' .. cmd .. '\')', vim.log.levels.WARN, { title = 'Neovim Config', on_open = function(win) local buf = vim.api.nvim_win_get_buf(win) vim.api.nvim_buf_set_option(buf, "filetype", "lua") end } ) end end -- vim binds ------------------------------------------------------------------ g.mapleader = ' ' -- set leader key map('x', 'p', [["_dP]]) -- greatest remap ever map('n', '', ':nohlsearch:echo') -- clear search map('t', '', '') -- make work in terminals -- move selected text up/down map('v', '', ":m '<-2gv=gv") map('v', '', ":m '>+1gv=gv") -- the cursor STAYS IN THE MIDDLE map('n', '', 'mzJ`zdelm z') -- when combining lines map('n', 'n', 'nzzzv') -- when searching map('n', 'N', 'Nzzzv') map('n', '', 'zz') -- half page jumping map('n', '', 'zz') map('n', 'x', '!chmod +x %') -- execute order 111 -- add some keybinds to the file view (netrw) a.nvim_create_autocmd('FileType', { pattern = 'netrw', callback = function() local bind = function(lhs, rhs) vim.keymap.set('n', lhs, rhs, { remap = true, buffer = true }) end bind('h', '-^') -- Go up a directory bind('l', '') -- Go down a directory / open a file bind('.', 'gh') -- Toggle dotfiles bind('P', 'z') -- Close preview window bind('', 'q') -- Close netrw end }) -- plugin binds --------------------------------------------------------------- -- pretty lsp view map('n', 'gd', 'Glance definitions') map('n', 'gr', 'Glance references') map('n', 'gy', 'Glance type_definitions') map('n', 'gi', 'Glance implementations') local treesj = require('treesj') -- treesj map('n', 'j', treesj.toggle) local telebuilt = require('telescope.builtin') -- telescope map('n', 'sf', telebuilt.find_files) map('n', 'sg', telebuilt.git_files) map('n', 'sp', function() telebuilt.grep_string({ search = vim.fn.input('Find string in project > ') }) end) map('n', 'so', telebuilt.oldfiles) local intellitab = require('intellitab') -- intellitab map('n', '', intellitab.indent) map('n', 'u', 'UndotreeToggle') -- undo tree map('n', 'f', 'SFMToggle') -- sfm map('n', 'b', 'JABSOpen') -- switch between previous buffers map('n', 'tt', 'TroubleToggle') -- trouble (lsp error view) map('n', 'tc', 'TodoTrouble') -- todo trouble map('n', '', 'IconPickerYank') -- icon picker local dapui = require('dapui') -- dap ui map('n', 'd', dapui.toggle) local smartsplits = require('smart-splits') -- resizing buffers (toggleable) map('n', 'r', smartsplits.start_resize_mode) -- toggle term (don't use leader key in these binds) map({'n', 't'}, '', 'ToggleTerm direction=float') map({'n', 't'}, '', 'lua _glow()') -- true zen map('n', 'zf', 'lua require("true-zen.focus").toggle()') map('n', 'zm', 'lua require("true-zen.minimalist").toggle()') map('n', 'za', 'lua require("true-zen.ataraxis").toggle()')