-- options --------------------------------------------------------------------- -- colorscheme vim.cmd.colorscheme("basic") -- leader vim.g.mapleader = " " vim.g.maplocalleader = " " vim.keymap.set({ "n", "v" }, "", "", { silent = true }) -- general vim.opt.undofile = true vim.opt.backup = false vim.opt.writebackup = false vim.opt.mouse = {} vim.opt.title = true -- appearance vim.opt.shortmess:append({ I = true }) vim.opt.number = true vim.opt.relativenumber = true vim.opt.signcolumn = "number" vim.opt.textwidth = 80 vim.opt.colorcolumn = "+1" -- tabline, winbar, statusline vim.opt.showtabline = 2 vim.opt.winbar = "%f%( %h%m%r%y%)" vim.opt.laststatus = 3 function _G.statusline() local col = vim.api.nvim_win_get_cursor(0)[2] + 1 local char = vim.api.nvim_get_current_line():sub(col, col):gsub("%%", "%%%1") local wc = vim.fn.wordcount() return table.concat({ vim.fn.pathshorten(vim.fn.getcwd()), "%=", "<", char, "> %b ", wc.visual_chars or wc.cursor_chars, "/", wc.chars, " ", wc.visual_words or wc.cursor_words, "/", wc.words }) end vim.opt.statusline = "%!v:lua.statusline()" -- behaviour vim.opt.ignorecase = true vim.opt.infercase = true vim.opt.smartcase = true vim.opt.smartindent = true vim.opt.clipboard = "unnamedplus" vim.opt.whichwrap = { ["b"] = true, ["s"] = true, ["h"] = true, ["l"] = true, ["<"] = true, [">"] = true, ["~"] = true, ["["] = true, ["]"] = true } vim.opt.wildoptions = { "fuzzy" } vim.opt.wildignorecase = true -- path vim.opt.path = ".,,**" -- local root = vim.fs.find({ ".git" }, { upward = true })[1] -- completion vim.opt.completeopt = { "menuone", "preview", "noinsert", "noselect" } -- keymaps --------------------------------------------------------------------- -- clear hlsearch vim.keymap.set( "n", "", function() vim.cmd.nohlsearch() end, { desc = "Stop the highlighting for the 'hlsearch' option" }) -- move cursor with alt in c-mode vim.keymap.set("c", "", "", { desc = "Left" }) vim.keymap.set("c", "", "", { desc = "Right" }) -- move cursor with alt in i-mode vim.keymap.set("i", "", "", { desc = "Left" }) vim.keymap.set("i", "", "", { desc = "Down" }) vim.keymap.set("i", "", "", { desc = "Up" }) vim.keymap.set("i", "", "", { desc = "Right" }) -- move cursor with alt in t-mode vim.keymap.set("t", "", "", { desc = "Left" }) vim.keymap.set("t", "", "", { desc = "Down" }) vim.keymap.set("t", "", "", { desc = "Up" }) vim.keymap.set("t", "", "", { desc = "Right" }) -- navigate windows vim.keymap.set("n", "", "h", { desc = "Navigate window left"}) vim.keymap.set("n", "", "j", { desc = "Navigate window down"}) vim.keymap.set("n", "", "k", { desc = "Navigate window up"}) vim.keymap.set("n", "", "l", { desc = "Navigate window right"}) vim.keymap.set("i", "", "h", { desc = "Navigate window left"}) vim.keymap.set("i", "", "j", { desc = "Navigate window down"}) vim.keymap.set("i", "", "k", { desc = "Navigate window up"}) vim.keymap.set("i", "", "l", { desc = "Navigate window right"}) vim.keymap.set("t", "", "h", { desc = "Navigate window left"}) vim.keymap.set("t", "", "j", { desc = "Navigate window down"}) vim.keymap.set("t", "", "k", { desc = "Navigate window up"}) vim.keymap.set("t", "", "l", { desc = "Navigate window right"}) -- navigate buffer vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") -- cmdline history navigation vim.keymap.set("c", "", "") vim.keymap.set("c", "", "") -- menus vim.keymap.set("n", "f", ":find ", { desc = ":find" }) vim.keymap.set("n", "b", ":buffer ", { desc = ":buffer" }) vim.keymap.set("n", "h", ":help ", { desc = ":help" }) -- spell vim.keymap.set("n", "s", function() vim.opt_local.spell = not(vim.opt_local.spell:get()) end, { desc = "Toggle spell" }) -- make vim.keymap.set("n", "m", "make", { desc = ":make" }) -- buffers --------------------------------------------------------------------- vim.keymap.set("n", "]b", "bnext", { desc = "Next buffer" }) vim.keymap.set("n", "[b", "bprev", { desc = "Previous buffer" }) vim.keymap.set("n", "d", "enewbd #", { desc = "Delete buffer" }) vim.keymap.set("n", "D", "bd", { desc = "Delete buffer and close window" }) -- tabs ------------------------------------------------------------------------ vim.keymap.set("n", "]t", "tabnext", { desc = "Next tab" }) vim.keymap.set("n", "[t", "tabprevious", { desc = "Previous tab" }) -- vimgrep --------------------------------------------------------------------- vim.keymap.set("n", "g", ":vimgrep / **/*/") local vimgrep_group = vim.api.nvim_create_augroup("Vimgrep", {}) vim.api.nvim_create_autocmd("QuickfixCmdPost", { group = vimgrep_group, pattern = "vimgrep", desc = "Open quickfix window after :vimgrep", command = "copen" }) -- quickfix -------------------------------------------------------------------- vim.keymap.set("n", "co", "copen", { desc = "Open quickfix window" }) vim.keymap.set("n", "cc", "cclose", { desc = "Close quickfix window" }) vim.keymap.set("n", "]q", "cnextzz", { desc = "Next quickfix item" }) vim.keymap.set("n", "[q", "cprevzz", { desc = "Previous quickfix item" }) -- netrw ----------------------------------------------------------------------- vim.g.netrw_use_errorwindow = 0 vim.g.netrw_banner = 0 vim.g.netrw_bufsettings = "noma nomod nowrap ro nobl" vim.g.netrw_fastbrowse = 0 vim.keymap.set("n", ".", "Explore .", { desc = "Explore current working directory" }) local netrw_group = vim.api.nvim_create_augroup("Netrw", {}) vim.api.nvim_create_autocmd("Filetype", { group = netrw_group, pattern = "netrw", desc = "Set keymap netrw buffers", callback = function() vim.keymap.set("n", "", "Rexplore", { buffer = true, desc = "Return to/from Explorer" }) end })