local opt, cmd, api = vim.opt, vim.cmd, vim.api local fn = vim.fn local v, g = vim.v, vim.g -- colorscheme ----------------------------------------------------------------- cmd.colorscheme("basic") -- statusline ------------------------------------------------------------------ function Statusline() local wordcount = fn.wordcount() return table.concat({ fn.pathshorten(fn.getcwd()), " %=", " <%b>", " ", wordcount.visual_chars or wordcount.cursor_chars, "/", wordcount.chars, " ", wordcount.visual_words or wordcount.cursor_words, "/", wordcount.words, " %l/%L", " %c" }) end -- options --------------------------------------------------------------------- -- moving around, searching and patterns opt.path = {".", "", "**"} opt.ignorecase = true opt.smartcase = true -- displaying text opt.scrolloff = 10 opt.breakindent = true opt.showbreak = "+++ " opt.number = true opt.relativenumber = true opt.colorcolumn = "+1" -- multiple windows opt.laststatus = 3 opt.statusline = "%!v:lua.Statusline()" -- multiple tab pages opt.showtabline = 2 -- terminal opt.title = true -- messages and info opt.shortmess:append({ I = true }) -- selecting text opt.clipboard = "unnamedplus" -- editing text opt.undofile = true opt.textwidth = 80 opt.completeopt = { "menuone", "preview", "noselect" } -- tabs and indenting opt.tabstop = 4 opt.shiftwidth = 4 opt.smarttab = true opt.softtabstop = -1 opt.expandtab = true opt.smartindent = true -- reading and writing files opt.writebackup = false opt.backup = false -- command line editing opt.wildignorecase = true -- various opt.signcolumn = "number" opt.winbar = "%f%( %h%m%r%y%)" opt.wildoptions = { "fuzzy" } -- keymaps --------------------------------------------------------------------- local keymap_set = vim.keymap.set keymap_set("n", "", "nohlsearch") keymap_set("c", "", "") keymap_set("c", "", "") keymap_set("n", "f", ":find ") keymap_set("n", "b", ":buffer ") keymap_set("n", "h", ":help ") keymap_set("n", "g", ":vimgrep /") keymap_set("n", "s", ":set spell!") keymap_set("n", "m", "make") keymap_set("n", "d", "bdelete") keymap_set("n", "]b", "bnext") keymap_set("n", "[b", "bprev") keymap_set("n", "]B", "blast") keymap_set("n", "[B", "bfirst") keymap_set("n", "]t", "tabnext") keymap_set("n", "[t", "tabprev") keymap_set("n", "]T", "tablast") keymap_set("n", "[T", "tabfirst") keymap_set("n", "]q", "cnextzz") keymap_set("n", "[q", "cprevzz") keymap_set("n", "]Q", "clastzz") keymap_set("n", "[Q", "cfirstzz") keymap_set("n", "co", "copen") keymap_set("n", "cc", "cclose") keymap_set("n", "", "h") keymap_set("n", "", "j") keymap_set("n", "", "k") keymap_set("n", "", "l") keymap_set("n", ".", "edit.") -- buffer autocomplete --------------------------------------------------------- api.nvim_create_autocmd("InsertCharPre", { group = api.nvim_create_augroup("Buffer autocompletion", {}), desc = "Buffer autocomplete on InsertCharPre", callback = function () if fn.pumvisible() == 0 and v.char:find("%w") then api.nvim_input("") end end })