vim.g.mapleader = " " vim.g.maplocalleader = " " -- look for modifier-lines in files and apply them vim.opt.modeline = true vim.opt.modelineexpr = true -- do no enter a linebreak at end of files (not unix-like, since it makes text-files binary for unix!) vim.opt.fixendofline = false -- improve line numbering vim.opt.number = true vim.opt.relativenumber = true -- highlight current line vim.opt.cursorline = true -- show meaningful chars for non-printable situations, e.g. nbsp or wrappings vim.opt.list = true vim.opt.listchars = "tab:› ,trail:·,nbsp:␣,extends:»,precedes:«" -- highlight search results vim.opt.hlsearch = true vim.cmd([[highlight LineNr ctermfg=7]]) vim.cmd([[highlight CursorLineNr ctermbg=green]]) vim.cmd([[highlight CursorLine ctermbg=green]]) -- do not wrap long lines vim.opt.wrap = false -- break lines at words, not chars vim.opt.linebreak = true -- indent by 2 chars by default, make tabstops also 2 chars and expand tabs to spaces vim.opt.tabstop = 8 vim.opt.softtabstop = 2 vim.opt.softtabstop = -1 vim.opt.shiftwidth = 2 vim.opt.expandtab = true -- fold code after some nesting vim.opt.foldlevel = 100 -- make backspace behave like in other applications vim.opt.backspace = "indent,eol,start" -- simply clear search vim.keymap.set("n", "/", "nohlsearch") -- add some quickfix shortcuts for easier navigation vim.keymap.set("n", "cn", "cnext") vim.keymap.set("n", "n", "cnext") vim.keymap.set("n", "cp", "cprevious") vim.keymap.set("n", "p", "cprevious") vim.keymap.set("n", "cc", "cclose") vim.keymap.set("n", "co", "copen") vim.keymap.set("n", "cf", "cfirst") vim.keymap.set("n", "cl", "clast") -- simple spellchecks vim.keymap.set("n", "ss", "set spell!") vim.keymap.set("n", "sd", "set spelllang=de_de") vim.keymap.set("n", "se", "set spelllang=en_us") -- make navigation easer on a german keyboard! vim.keymap.set("n", "ä", "]") vim.keymap.set("n", "ö", "[") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("n", ",", ";") vim.keymap.set("n", ";", ",") -- simpler navigation in diffs if vim.api.nvim_win_get_option(0, "diff") then vim.keymap.set("n", "1", "diffget LOCAL") vim.keymap.set("n", "2", "diffget BASE") vim.keymap.set("n", "3", "diffget REMOTE") vim.keymap.set("n", "n", "]c") vim.keymap.set("n", "p", "[c") end -- autocommands for specific files local configgroup = vim.api.nvim_create_augroup('MY_DEFAULTS', { clear = true }) function fix_filetype(pattern, filetype) vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { pattern = pattern, group = configgroup, callback = function() vim.opt.filetype = filetype end, }) end local home = vim.fn.expand("$HOME") -- fix filetypes fix_filetype("*Containerfile", "dockerfile") fix_filetype(home.."/.config/git/*", "gitconfig") fix_filetype(home.."/.local/bin/*", "sh") -- adjust settings per filetype -- git vim.api.nvim_create_autocmd("FileType", { pattern = "gitconfig", group = configgroup, callback = function() vim.opt_local.expandtab = false vim.opt_local.shiftwidth = 4 vim.opt_local.tabstop = 4 end, }) -- lua vim.api.nvim_create_autocmd("FileType", { pattern = "lua", group = configgroup, callback = function() vim.opt_local.expandtab = false vim.opt_local.shiftwidth = 4 vim.opt_local.tabstop = 4 end, }) -- i3config vim.api.nvim_create_autocmd("FileType", { pattern = "i3config", group = configgroup, callback = function() vim.opt_local.foldlevel = 0 vim.opt_local.foldmethod = "marker" end, }) -- snippets vim.api.nvim_create_autocmd("FileType", { pattern = "snippets", group = configgroup, callback = function() vim.opt_local.expandtab = false vim.opt_local.shiftwidth = 2 vim.opt_local.tabstop = 4 end, })