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