local misc = require('core.misc') local map = misc.map -- vim binds vim.g.mapleader = ' ' -- set leader key map('x', 'p', [["_dP]], { desc = 'Greatest remap of all time.' }) map('n', '', ':nohlsearch:echo', { desc = 'Clear search.' }) -- move selected text up/down map('v', '', ":m '<-2gv=gv", { desc = 'Move selected text up.' }) map('v', '', ":m '>+1gv=gv", { desc = 'Move selected text down.' }) -- 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', '', 'zzzv') -- half page jumping map('n', '', 'zzzv') map('n', 'x', function() -- execute order 111 local fn = vim.fn.expand("%:p") if vim.fn.getftype(fn) == "file" then local perm = vim.fn.getfperm(fn) if string.match(perm, "x", 3) then vim.notify("Removed executable flags", vim.log.levels.INFO, { title = misc.appid }) vim.fn.setfperm(fn, string.sub(fn, 1, 2).."-"..string.sub(fn, 4, 5).."-"..string.sub(fn, 7, 8).."-") else vim.notify("Add executable flags", vim.log.levels.INFO, { title = misc.appid }) vim.fn.setfperm(fn, string.sub(fn, 1, 2).."x"..string.sub(fn, 4, 5).."x"..string.sub(fn, 7, 8).."x") end else vim.notify("File doesn't exist", vim.log.levels.INFO, { title = misc.appid }) end end, { desc = 'toggle executable flag of the file' }) -- good spell suggestion ui -- (stolen from https://github.com/neovim/neovim/pull/25833) vim.keymap.set('n', 'z=', function() local spell_on_choice = vim.schedule_wrap(function(_, idx) if type(idx) == 'number' then vim.cmd('normal! '..idx..'z=') end end) if vim.v.count > 0 then spell_on_choice(nil, vim.v.count) return end local cword = vim.fn.expand('') local prompt = 'Change '..vim.inspect(cword)..' to:' vim.ui.select(vim.fn.spellsuggest(cword, vim.o.lines), { prompt = prompt }, spell_on_choice) end, { desc = 'Shows spelling suggestions' }) -- quickfix map('n', '', 'cnextzz') map('n', '', 'cprevzz') map('n', '', 'cclose') -- open up Ex map('n', 'c', 'Ex')