let mapleader = " " set number relativenumber set ignorecase smartcase incsearch hlsearch set autoindent expandtab tabstop=4 shiftwidth=4 softtabstop=4 set scrolloff=8 wildmenu showcmd laststatus=2 set hidden set noswapfile nobackup undofile let s:undo_dir = expand('~/.vim/undodir') if !isdirectory(s:undo_dir) call mkdir(s:undo_dir, 'p') endif set undodir=~/.vim/undodir set undolevels=1000 set undoreload=10000 set belloff=all set noerrorbells set lazyredraw set synmaxcol=500 set redrawtime=500 set maxmempattern=5000 set nomodeline set noshowmatch silent! set diffopt+=vertical,algorithm:histogram,indent-heuristic,iwhite,foldcolumn:0 if executable('rg') set grepprg=rg\ --vimgrep\ --smart-case\ --hidden\ -g\ '!.git' set grepformat=%f:%l:%c:%m endif set path+=** set wildignore+=**/node_modules/**,**/.git/**,**/vendor/** set wildignore+=**/tmp/**,**/dist/**,**/build/**,**/__pycache__/**,**/*.pyc augroup filetypes autocmd! autocmd FileType gitcommit setlocal spell spelllang=en_gb textwidth=72 colorcolumn=50,72 autocmd FileType go setlocal noexpandtab softtabstop=0 autocmd FileType markdown,text setlocal spell spelllang=en_gb wrap autocmd FileType python setlocal textwidth=88 colorcolumn=88 autocmd FileType typescript,typescriptreact setlocal syntax=javascript autocmd FileType qf nnoremap q :cclose augroup END augroup quickfix autocmd! autocmd QuickFixCmdPost [^l]* cwindow augroup END let g:netrw_banner = 0 let g:netrw_liststyle = 3 let g:netrw_browse_split = 4 set background=dark if has('termguicolors') && ($COLORTERM ==# 'truecolor' || $COLORTERM ==# '24bit') set termguicolors endif highlight clear if exists("syntax_on") syntax reset endif syntax enable highlight Normal guifg=#CCE0D0 guibg=NONE highlight LineNr guifg=#808080 guibg=NONE highlight CursorLineNr guifg=#FCFC38 guibg=NONE gui=bold highlight StatusLine guifg=#CCE0D0 guibg=#000080 gui=bold highlight StatusLineNC guifg=#808080 guibg=#000080 gui=NONE highlight VertSplit guifg=#808080 guibg=NONE highlight ColorColumn guibg=#703014 highlight Comment guifg=#808080 gui=italic highlight Constant guifg=#F88C14 highlight String guifg=#2CB494 highlight Number guifg=#F88C14 highlight Identifier guifg=NONE highlight Function guifg=#0C48CC gui=bold highlight Statement guifg=#4068D4 highlight Keyword guifg=#4068D4 highlight Type guifg=#2CB494 highlight Special guifg=#88409C highlight PreProc guifg=#F88C14 highlight Error guifg=#F40404 guibg=NONE gui=bold,underline highlight Todo guifg=#FCFC38 guibg=NONE gui=bold highlight Search guifg=#3C3C3C guibg=#FCFC38 highlight IncSearch guifg=#3C3C3C guibg=#F88C14 highlight DiffAdd guifg=NONE guibg=#2CB494 highlight DiffDelete guifg=NONE guibg=#F40404 highlight DiffChange guifg=NONE guibg=#0C48CC highlight DiffText guifg=NONE guibg=#88409C gui=bold highlight diffAdded guifg=#2CB494 gui=bold highlight diffRemoved guifg=#F40404 gui=bold highlight diffFile guifg=#0C48CC gui=bold highlight diffIndexLine guifg=#88409C highlight diffLine guifg=#00E4FC highlight diffSubname guifg=#F88C14 highlight SpellBad guifg=#F40404 gui=undercurl guisp=#F40404 highlight SpellCap guifg=#FCFC38 gui=undercurl guisp=#FCFC38 highlight SpellRare guifg=#88409C gui=undercurl guisp=#88409C highlight Visual guibg=#4068D4 highlight Pmenu guifg=#CCE0D0 guibg=#000080 highlight PmenuSel guifg=#3C3C3C guibg=#2CB494 gui=bold highlight QuickFixLine guibg=#4068D4 gui=bold function! GitRoot() let l:root = systemlist('git rev-parse --show-toplevel')[0] if v:shell_error == 0 && isdirectory(l:root) execute 'silent cd' fnameescape(l:root) echo 'Project Root: ' . l:root else echo 'Not in a git repository' endif endfunction function! OpenScratch() split | noswapfile hide enew setlocal buftype=nofile bufhidden=hide localindentkeys= nnoremap q :q endfunction nnoremap gr :call GitRoot() nnoremap s :call OpenScratch() nnoremap t :!ctags -R . nnoremap :nohlsearch nnoremap dw :set diffopt+=iwhite nnoremap dW :set diffopt-=iwhite nnoremap ]c ]czz nnoremap [c [czz nnoremap ]q :cnextzz nnoremap [q :cprevzz nnoremap :cnext nnoremap :cprev nnoremap g :silent grep! vnoremap g "zy:silent grep! "z"" nnoremap / :grep