------------------------------------------------------------------------------- -- -- Basic Settings -- vim.cmd("filetype off") -- Leaders vim.g.mapleader = "," vim.g.maplocalleader = "-" -- Better Unix support vim.opt.viewoptions = { "folds", "options", "cursor", "unix", "slash" } vim.opt.encoding = "utf-8" -- True color support vim.opt.termguicolors = true -- Other options vim.opt.backspace = { "indent", "eol", "start" } vim.opt.laststatus = 2 vim.opt.showmode = false -- Tabs as spaces vim.opt.expandtab = true vim.opt.tabstop = 2 vim.opt.softtabstop = 2 vim.opt.shiftwidth = 2 -- Fixes broken cursor on Linux vim.opt.guicursor = "" -- Disable mouse / touchpad vim.opt.mouse = "" -- Incremental substitutin vim.opt.inccommand = "split" ------------------------------------------------------------------------------- -- -- General editor options -- -- Hide files when leaving them. vim.opt.hidden = true -- Show line numbers. vim.opt.number = true -- Minimum line number column width. vim.opt.numberwidth = 1 -- Number of screen lines to use for the commandline. vim.opt.cmdheight = 2 -- Lines length limit (0 if no limit). vim.opt.textwidth = 0 -- Don't cut lines in the middle of a work. vim.opt.linebreak = true -- Show matching parenthesis. vim.opt.showmatch = true -- Time during which the matching parenthesis is shown. vim.opt.matchtime = 2 -- Sensible default line auto cutting and formatting. vim.opt.formatoptions = "jtcrq" -- Copy/Past to/from clipboard. vim.opt.clipboard = "unnamedplus" -- Highlight line cursor is currently on. vim.opt.cursorline = true -- Invisible characters representation when :set list vim.opt.listchars = { tab = "→ ", trail = "~", nbsp = "␣", eol = "¬", } -- Search -- Incremental search. vim.opt.incsearch = true -- Case insensitive. vim.opt.ignorecase = true -- Case insensitive if no uppercase letter in pattern, case sensitive otherwise. vim.opt.smartcase = true -- Spell vim.opt.spelllang = "en,ru" -- Fold level vim.opt.foldlevel = 99 vim.opt.foldlevelstart = 99 vim.opt.foldminlines = 3 vim.opt.foldnestmax = 5 vim.opt.foldmethod = "expr" vim.cmd([[ set foldexpr=nvim_treesitter#foldexpr() ]]) ------------------------------------------------------------------------------- -- -- File type specified -- local bufReadFile = { "BufNewFile", "BufRead" } -- Set up a line limiter for each lang local line_limiter_augroup = vim.api.nvim_create_augroup("line_limiter", {}) local function set_line_limiter(limit, patterns) vim.api.nvim_create_autocmd(bufReadFile, { pattern = patterns, group = line_limiter_augroup, callback = function() vim.wo.colorcolumn = tostring(limit) end, }) end set_line_limiter(101, { "*.nix", "*.vim", "*.lua", "*.ts", "*.tsx", "*.js", "*.jsx", "*.rs", }) set_line_limiter(81, { "*.json", "*.yml", "*.yaml", "*.md", "*.html", "*.css", }) ------------------------------------------------------------------------------- -- -- Bindings -- local function clear_search_hl() vim.opt.hlsearch = false end vim.keymap.set("n", "", clear_search_hl, { desc = "Clear search highlighting" }) -- Enable fast navigation between windows vim.keymap.set("n", "", "h") vim.keymap.set("n", "", "l") vim.keymap.set("n", "", "j") vim.keymap.set("n", "", "k") -- Disable the annoying and useless ex-mode vim.keymap.set("n", "Q", "") vim.keymap.set("n", "gQ", "") -- Disable arrow keys vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("v", "", "") vim.keymap.set("v", "", "") vim.keymap.set("v", "", "") vim.keymap.set("v", "", "") -- ... instead of insert mode for rus lang and popups -- vim.keymap.set("i", "", "") -- vim.keymap.set("i", "", "") -- vim.keymap.set("i", "", "") -- vim.keymap.set("i", "", "") -- Disable page up / down vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("v", "", "") vim.keymap.set("v", "", "") vim.keymap.set("i", "", "") vim.keymap.set("i", "", "") ------------------------------------------------------------------------------- -- -- Abbreviatures -- vim.cmd("cabbrev bsp belowright split") vim.cmd("cabbrev rvsp belowright vsplit")