local M = {} local map = function(mode, lhs, rhs, opts) if mode ~= "c" then opts = opts or {} opts.silent = opts.silent ~= false -- silent by default end vim.keymap.set(mode, lhs, rhs, opts) end -- stylua: ignore start M.setup = function() -- better navigation for wrapped lines map("n", "j", "gj") map("n", "k", "gk") -- maintain cursor position when joining lines map("n", "J", "mzJ`z") -- retain selection when making changes in visual mode map("v", "", "gv") map("v", "", "gv") map("v", "g", "ggv") map("v", "g", "ggv") map("v", ">", ">gv") map("v", "<", "<gv") -- place destination of important movements in the center of the screen map("n", "n", "nzzzv") map("n", "N", "Nzzzv") map("n", "*", "*zzzv") map("n", "#", "#zzzv") map("n", "g*", "g*zzzv") map("n", "g#", "g#zzzv") map("n", "", "zzzv") map("n", "", "zzzv") -- easier window navigation map("n", "", "j") map("n", "", "k") map("n", "", "h") map("n", "", "l") -- disable highlight until next search map("n", "h", "nohlsearch") local window = require("fschauen.util.window") -- window resizing map("n", "", window.resize_up(2), { desc = "Resize window upward" }) map("n", "", window.resize_down(2), { desc = "Resize window downward" }) map("n", "", window.resize_left(2), { desc = "Resize window leftward" }) map("n", "", window.resize_right(2), { desc = "Resize window rightward" }) -- easy tab navigation map("n", "", "tabnext") map("n", "", "tabprevious") -- move lines up and down map("n", "", [[:move .+1==]]) map("n", "", [[:move .-2==]]) map("v", "", [[:move '>+1gv=gv]]) map("v", "", [[:move '<-2gv=gv]]) map("i", "", [[:move .+1==gi]]) map("i", "", [[:move .-2==gi]]) -- move to begin/end of line in insert mode map("i", "", "^") map("i", "", "$") -- move to begin of line in command mode ( moves to end by default) map("c", "", "") -- more convenient way of entering normal mode from terminal mode map("t", [[]], [[]]) -- recall older/recent command-line from history map("c", "", "") map("c", "", "") -- trigger InsertLeave when leaving Insert mode with ctrl-c (see :help i_CTRL-C) map("i", "", "") -- quickly change background map("n", "bg", [[let &background = &background ==? "light" ? "dark" : "light"]]) -- don't loose the original yanked contents when pasting in visual mode map("x", "p", [["_dP]]) local diagnostic = require("fschauen.diagnostic") local ui = require("fschauen.util.icons").ui -- navigate diagnostics map("n", "dd", diagnostic.toggle, { desc = ui.Diagnostic.." [d]iagnostic enable/[d]isable" }) map("n", "do", diagnostic.open_float, { desc = ui.Diagnostic.." [d]iagnostic [o]pen" }) map("n", "dh", diagnostic.hide, { desc = ui.Diagnostic.." [d]iagnostic [h]ide" }) map("n", "ds", diagnostic.select_virtual_text_severity, { desc = ui.Diagnostic.." [d]iagnostic [s]everity" }) -- navigate items in quickfix and location lists map("n", "j", "cnextzz") map("n", "k", "cpreviouszz") map("n", "j", "lnextzz") map("n", "k", "lpreviouszz") -- toggle quickfix and loclist map("n", "ll", window.toggle_quickfix, { desc = ui.Toggle.." toggle quickfix" }) map("n", "ll", window.toggle_loclist, { desc = ui.Toggle.." toggle loclist" }) local options = require("fschauen.util.options") -- toggle options map("n", "sn", options.toggle_number, { desc = ui.Toggle.." toggle 'number'" }) map("n", "sr", options.toggle_relativenumber, { desc = ui.Toggle.." toggle 'relativenumber'" }) map("n", "sl", options.toggle_list, { desc = ui.Toggle.." toggle 'list'" }) map("n", "sw", options.toggle_wrap, { desc = ui.Toggle.." toggle 'wrap'" }) map("n", "ss", options.toggle_spell, { desc = ui.Toggle.." toggle 'spell'" }) end -- stylua: ignore end return M