-- Set leader key before any other mappings vim.g.mapleader = " " -- vim.opt.expandtab = true -- vim.opt.hidden = true -- vim.opt.incsearch = true -- vim.opt.mouse = "a" -- vim.opt.number = true -- vim.opt.shiftwidth = 2 -- vim.opt.splitbelow = true -- vim.opt.splitright = true -- vim.opt.signcolumn = "yes:3" -- vim.opt.tabstop = 2 -- vim.opt.timeoutlen = 0 -- vim.wo.wrap = false -- vim.opt.exrc = true -- vim.cmd("syntax on") vim.opt.backup = false -- creates a backup file vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard vim.opt.cmdheight = 2 -- more space in the neovim command line for displaying messages vim.opt.colorcolumn = "99999" -- fixes indentline for now vim.opt.completeopt = { "menuone", "noselect" } vim.opt.conceallevel = 0 -- so that `` is visible in markdown files vim.opt.fileencoding = "utf-8" -- the encoding written to a file vim.opt.foldmethod = "manual" -- folding set to "expr" for treesitter based folding vim.opt.foldexpr = "" -- set to "nvim_treesitter#foldexpr()" for treesitter based folding vim.opt.guifont = "monospace:h17" -- the font used in graphical neovim applications vim.opt.hidden = true -- required to keep multiple buffers and open multiple buffers vim.opt.hlsearch = true -- highlight all matches on previous search pattern vim.opt.ignorecase = true -- ignore case in search patterns vim.opt.mouse = "a" -- allow the mouse to be used in neovim vim.opt.pumheight = 10 -- pop up menu height vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore vim.opt.showtabline = 2 -- always show tabs vim.opt.smartcase = true -- smart case vim.opt.smartindent = true -- make indenting smarter again vim.opt.splitbelow = true -- force all horizontal splits to go below current window vim.opt.splitright = true -- force all vertical splits to go to the right of current window vim.opt.swapfile = false -- creates a swapfile vim.opt.termguicolors = true -- set term gui colors (most terminals support this) vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds) vim.opt.title = true -- set the title of window to the value of the titlestring vim.opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to vim.opt.undodir = vim.fn.stdpath "cache" .. "/undo" vim.opt.undofile = true -- enable persistent undo vim.opt.updatetime = 300 -- faster completion vim.opt.writebackup = false -- if a file is being edited by another program it is not allowed to be edited vim.opt.expandtab = true -- convert tabs to spaces vim.opt.shiftwidth = 2 -- the number of spaces inserted for each indentation vim.opt.tabstop = 2 -- insert 2 spaces for a tab vim.opt.cursorline = true -- highlight the current line vim.opt.number = true -- set numbered lines vim.opt.relativenumber = false -- set relative numbered lines vim.opt.numberwidth = 4 -- set number column width to 2 {default 4} vim.opt.signcolumn = "yes" -- always show the sign column otherwise text shifts each time vim.opt.wrap = false -- display lines as one long line vim.opt.spell = false vim.opt.spelllang = "en" vim.opt.scrolloff = 8 -- keep 8 lines above/below the cursor vim.opt.sidescrolloff = 8 -- Automatically disable heavy features for very large files local largefile_group = vim.api.nvim_create_augroup("LargeFile", { clear = true }) vim.api.nvim_create_autocmd("BufReadPre", { group = largefile_group, pattern = "*", callback = function(args) local max_filesize = 1 * 1024 * 1024 -- 1 MB in bytes local file = vim.fn.expand("") if vim.fn.getfsize(file) > max_filesize then -- Turn off syntax highlighting vim.cmd("syntax off") -- Disable Treesitter's highlight for this buffer pcall(vim.cmd, "TSBufDisable highlight") -- Optionally disable LSP for this buffer for _, client in pairs(vim.lsp.get_active_clients()) do if client ~= nil and client.attached_buffers[args.buf] then client.detach(args.buf) end end -- You can also disable or reduce other settings if needed, e.g.: vim.opt.foldmethod = "manual" vim.opt.wrap = false vim.opt.hlsearch = false end end, })