--[[ General --]] -- Lines of history vim.opt.history = 500 -- Line numbers vim.opt.nu = true -- Autoread when file is changed outside vim vim.opt.autoread = true -- enable filetype plugins vim.cmd [[ filetype plugin on filetype indent on ]] -- Use a mapleader --vim.opt.mapleader = "," vim.g.mapleader = "," -- Fast saving map('n', 'w', ':w!', silentnoremap) -- Convenient sudo saving of file vim.api.nvim_create_user_command( 'W', 'w !sudo tee % > /dev/null', {bang=true, desc='Save file using sudo'} ) --[[ VIM User interface --]] -- Set 7 lines to the cursor - when moving vertically using j/k vim.opt.so = 7 -- set WildMenu vim.opt.wildmenu = true -- Ignore compiled files vim.opt.wildignore = '*.o,*~,*.pyc' vim.opt.wildignore:append('*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store') -- Always show current position vim.opt.ruler = true -- Hide buffers when they are abandoned vim.opt.hid = true -- Make backspace function normally vim.opt.backspace = 'eol,start,indent' vim.opt.whichwrap:append('<,>,h,l') -- Ignore case when searching vim.opt.ignorecase = true -- Be smart about cases when searching -- If search has uppercases, then we want to respect case vim.opt.smartcase = true -- Highlight search results vim.opt.hlsearch = true -- Make search act like search in modern browsers vim.opt.incsearch = true -- Turn on "magic" for regular expressions vim.opt.magic = true -- Show matching brackets when cursor is over one vim.opt.showmatch = true vim.opt.mat = 2 -- Turn off annoying bells aon errors --vim.opt.noerrorbells = false --vim.opt.novisualbell = false --vim.opt.t_vb = '' --vim.opt.tm = 500 -- Add extra margin to the left (makes changing margins less annoying vim.opt.foldcolumn = '1' -- Show leader commands vim.opt.showcmd = true -- Show colour column vim.opt.colorcolumn = '80,120' -- => Colors and Fonts -- Enable syntac highlighting vim.opt.syntax = 'enable' -- Set utf8 as standard encoding vim.opt.encoding = 'utf8' -- Use Unix as the standard file type vim.opt.ffs = 'unix,dos,mac' --[[ Files, backups and undo --]] vim.opt.swapfile = false --[[ Text, tab and indent related --]] -- Use spaces instead of tabs vim.opt.expandtab = true -- Be smart when using tabs vim.opt.smarttab = true -- 1 tab is 4 spaces vim.opt.shiftwidth = 4 vim.opt.tabstop = 4 vim.opt.softtabstop = 4 -- Linebreak on 500 ch vim.opt.lbr = true vim.opt.tw = 500 -- Auto indent vim.opt.ai = true -- Smart indent vim.opt.si = true -- Wrap lines vim.opt.wrap = true --[[ Visual mode related --]] map('v', ' *', ':call VisualSelection("","")/=@/', silentnoremap) map('v', ' #', ':call VisualSelection("","")?=@/', silentnoremap) --[[ Moving around, tabs, windows and buffers --]] -- Disable highlight when is pressed map('n', '', ':noh', silentnoremap) -- Smart way to move between windows map('n', '', 'j', silentnoremap) map('n', '', 'k', silentnoremap) map('n', '', 'h', silentnoremap) map('n', '', 'l', silentnoremap) -- Close current buffer map('n', 'bd', ':Bclose:tabclosegT', silentnoremap) -- Close all buffers map('n', 'ba', ':bufdo bd', silentnoremap) -- Navigate buffers map('n', 'l', ':bnext', silentnoremap) map('n', 'h', ':bprevious', silentnoremap) -- Tab commands map('n', 'tn', ':tabnew', silentnoremap) map('n', 'to', ':tabonly', silentnoremap) map('n', 'tc', ':tabclose', silentnoremap) map('n', 'tm', ':tabmove', silentnoremap) map('n', 't', ':tabnext', silentnoremap) -- Switch CWD to directory of the open buffer map('n', 'cd', ':cd %:p:h:pwd 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif ]] -- Make mouse work nice with tmux vim.opt.mouse = 'a' --[[ Status Line --]] -- Always show status line vim.opt.laststatus = 2 --[[ Mappings --]] -- Move a line of text using ALT+[jk] map('n', '', 'mz:m+`z', silentnoremap) map('n', '', 'mz:m-2`z', silentnoremap) map('v', '', ":m'>+`mzgv`yo`z", silentnoremap) map('v', '', ":m'<-2`>my`', '', silentnoremap) map('n', '', '', silentnoremap) map('v', '', '', silentnoremap) map('v', '', '', silentnoremap) end -- Delete trailing whitespace on save vim.api.nvim_create_autocmd("BufWritePre", { pattern = { "*" }, command = [[%s/\s\+$//e]] }) --[[ Misc --]] -- Scribble buffer map('n', 'q', ':e ~/buffer', silentnoremap) -- Toggle paste mode map('n', 'pp', ':setlocal paste!', silentnoremap) -- Send file-title to tmux vim.opt.titlestring = [[%f %h%m%r%w%{v:progname} (%{tabpagenr()} of %{tabpagenr('$')}})]] vim.opt.title = true -- Toggle displaying special characters vim.keymap.set('n', '', ToggleListChars, silentnoremap) -- Load and save session map('n', 'sm', ':mksession! vim_session.vim', silentnoremap) map('n', 'sl', ':source vim_session.vim', silentnoremap) -- Dont't close window when deleting buffer --vim.api.nvim_create_user_command("Bclose", -- "BufcloseCloseIt()", -- {bang = true} --)