filetype plugin indent on syntax on colorscheme habamax set nobackup nowritebackup set noswapfile set number set tabstop=8 set shiftwidth=4 set softtabstop=4 set expandtab set autoindent set smarttab set mouse=a set laststatus=2 set scrolloff=5 set ignorecase set hlsearch set incsearch set nowrap set timeoutlen=1000 set ttimeoutlen=0 set hidden set wildmenu set clipboard=unnamed,unnamedplus set colorcolumn=75 "set backspace=indent,eol,start set updatetime=100 set signcolumn=auto " ----- Custom Functions -------------------------------------------------- " Align regex command! -nargs=? -range Align ,call AlignSection('') vnoremap a :Align function! AlignSection(regex) range let extra = 1 let sep = empty(a:regex) ? '=' : a:regex let maxpos = 0 let section = getline(a:firstline, a:lastline) for line in section let pos = match(line, ' *'.sep) if maxpos < pos let maxpos = pos endif endfor call map(section, 'AlignLine(v:val, sep, maxpos, extra)') call setline(a:firstline, section) endfunction function! AlignLine(line, sep, maxpos, extra) let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)') if empty(m) return a:line endif let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra) return m[1] . spaces . m[2] endfunction " Window Operations function! CreateOrSelectWindow() let win_count = winnr('$') if win_count == 1 execute 'vsplit' endif execute '2wincmd w' endfunction function! PutIntoShade() let max_width = float2nr(&columns * 0.95) let min_width = float2nr(&columns * 0.5) if winwidth(0) > min_width execute 'vertical resize ' . min_width elseif winwidth(0) <= min_width execute 'vertical resize ' . max_width endif endfunction " Preserve paste line column function! PasteAbove() let c = col('.') normal! P call cursor(0, c) endfunction function! PasteBelow() let c = col('.') normal! p call cursor(0, c) endfunction " ----- Custom Keymaps ---------------------------------------------------- nnoremap K vnoremap > >:normal gv vnoremap < <:normal gv vnoremap J :m '>+1gv=gv vnoremap K :m '<-2gv=gv nnoremap H :bnextzz nnoremap L :bprevzz nnoremap , :copen nnoremap > :cn nnoremap < :cp nnoremap g/ :noh nnoremap E :Ex nnoremap z :set relativenumber! nnoremap x :set wrap! nnoremap gb :make nnoremap gr :make run nnoremap gw :close nnoremap gq :bdelete nnoremap ! :1wincmd w nnoremap @ :call CreateOrSelectWindow() nnoremap # :call PutIntoShade() nnoremap P :call PasteAbove() nnoremap p :call PasteBelow() " ----- Highlights -------------------------------------------------------- " Todo Comments highlights " Colors: https://vim.fandom.com/wiki/Xterm256_color_names_for_console_Vim " NOTE: These are confirmed to work with 'habamax' color scheme. highlight TODOPerf term=bold,underline cterm=bold,underline ctermfg=93 " purple highlight TODOHack term=bold,underline cterm=bold,underline ctermfg=214 " orange highlight TODOTodo term=bold,underline cterm=bold,underline ctermfg=51 " cyan highlight TODONote term=bold,underline cterm=bold,underline ctermfg=46 " green highlight TODOFix term=bold,underline cterm=bold,underline ctermfg=196 " green highlight TODOWarning term=bold,underline cterm=bold,underline ctermfg=214 " orange augroup HiglightTODO autocmd! autocmd WinEnter,VimEnter * :silent! call matchadd('TODOPerf', 'PERF:', -1) autocmd WinEnter,VimEnter * :silent! call matchadd('TODOHack', 'HACK:', -1) autocmd WinEnter,VimEnter * :silent! call matchadd('TODOTodo', 'TODO:', -1) autocmd WinEnter,VimEnter * :silent! call matchadd('TODONote', 'NOTE:', -1) autocmd WinEnter,VimEnter * :silent! call matchadd('TODOFix', 'FIX:', -1) autocmd WinEnter,VimEnter * :silent! call matchadd('TODOWarning', 'WARNING:', -1) augroup END