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=#2A1A0A 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=#7290B8 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=#2CB494 guibg=#0A2A1A gui=NONE highlight DiffDelete guifg=#F40404 guibg=#2A0A0A gui=NONE highlight DiffChange guifg=#4068D4 guibg=#0A1A2A gui=NONE highlight DiffText guifg=#CCE0D0 guibg=#1A2A3A gui=bold highlight diffAdded guifg=#2CB494 gui=bold highlight diffRemoved guifg=#F40404 gui=bold highlight diffFile guifg=#7290B8 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=#1A3050 highlight Pmenu guifg=#CCE0D0 guibg=#000080 highlight PmenuSel guifg=#3C3C3C guibg=#2CB494 gui=bold highlight Folded guifg=#808080 guibg=#1A1A1A gui=NONE highlight FoldColumn guifg=#808080 guibg=NONE highlight QuickFixLine guibg=#1A3050 gui=bold " UI Groups highlight Title guifg=#00E4FC gui=bold highlight Underlined guifg=#CCE0D0 gui=underline highlight Directory guifg=#7290B8 highlight MatchParen guifg=#3C3C3C guibg=#2CB494 highlight NonText guifg=#808080 highlight SpecialKey guifg=#808080 highlight EndOfBuffer guifg=#808080 highlight Conceal guifg=#808080 highlight CursorLine guibg=#0A2A1A gui=NONE highlight CursorColumn guibg=#0A2A1A highlight SignColumn guifg=#808080 guibg=NONE highlight WarningMsg guifg=#FCFC38 highlight ErrorMsg guifg=#F40404 gui=bold highlight ModeMsg guifg=#CCE0D0 gui=bold highlight MoreMsg guifg=#2CB494 highlight Question guifg=#2CB494 highlight WildMenu guifg=#3C3C3C guibg=#FCFC38 highlight TabLine guifg=#808080 guibg=#000080 gui=NONE highlight TabLineFill guibg=#000080 highlight TabLineSel guifg=#CCE0D0 guibg=#000080 gui=bold highlight SpellLocal guifg=#00E4FC gui=undercurl guisp=#00E4FC " Syntax Groups highlight Boolean guifg=#F88C14 highlight Float guifg=#F88C14 highlight Character guifg=#2CB494 highlight Conditional guifg=#4068D4 highlight Repeat guifg=#4068D4 highlight Label guifg=#88409C highlight Operator guifg=#CCE0D0 highlight Exception guifg=#F40404 highlight Include guifg=#F88C14 highlight Define guifg=#F88C14 highlight Macro guifg=#F88C14 highlight PreCondit guifg=#F88C14 highlight StorageClass guifg=#4068D4 highlight Structure guifg=#4068D4 highlight Typedef guifg=#4068D4 highlight Delimiter guifg=#CCE0D0 highlight SpecialChar guifg=#88409C highlight SpecialComment guifg=#FCFC38 highlight Debug guifg=#F032E6 highlight Tag guifg=#7290B8 highlight Ignore guifg=#808080 " HTML/Markdown Groups highlight htmlBold guifg=#CCE0D0 gui=bold highlight htmlItalic guifg=#CCE0D0 gui=italic highlight htmlTagName guifg=#4068D4 highlight htmlLink guifg=#CCE0D0 gui=underline highlight htmlTag guifg=#808080 highlight htmlEndTag guifg=#808080 highlight markdownH1Delimiter guifg=#808080 highlight markdownH2Delimiter guifg=#808080 highlight markdownH3Delimiter guifg=#808080 highlight markdownH4Delimiter guifg=#808080 highlight markdownH5Delimiter guifg=#808080 highlight markdownH6Delimiter guifg=#808080 " Language-specific Groups highlight pythonBuiltinObj guifg=#F88C14 highlight pythonDottedName guifg=#CCE0D0 highlight rubyInterpolation guifg=#88409C highlight rubyInterpolationDelimiter guifg=#88409C highlight rubyBlockParameter guifg=#CCE0D0 highlight rubyBlockArgument guifg=#CCE0D0 highlight jsxCloseString guifg=#4068D4 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