update vimrc
[dotfiles.git] / .vimrc
1 "          _                    
2 "   __   _(_)_ __ ___  _ __ ___ 
3 "   \ \ / / | '_ ` _ \| '__/ __|
4 "    \ V /| | | | | | | | | (__ 
5 "   (_)_/ |_|_| |_| |_|_|  \___|
6 "                            
7
8 " basics
9 syntax on
10 set number
11 set relativenumber
12 set incsearch
13 set smartcase
14 set encoding=utf-8
15 set tabstop=4
16 set shiftwidth=4
17 set expandtab
18 set nrformats+=alpha "inc/dec alpha
19 set hidden
20
21 " cursors depending on mode
22 let &t_EI = "\<Esc>[2 q" "normal mode
23 let &t_SI = "\<Esc>[6 q" "insert mode
24 let &t_SR = "\<Esc>[4 q" "replace mode
25
26 " conceal
27 set conceallevel=2
28
29 " Bindings
30 let mapleader = ' '
31
32 " File stuff
33 map <leader>f :Ex<cr>
34 map <leader>l :bn<cr>
35 map <leader>h :bp<cr>
36 map <leader>d :bd<cr>
37
38 let g:netrw_liststyle = 3
39 let g:netrw_banner = 0
40 let g:netrw_winsize = 25
41
42 " spell check
43 setlocal spell
44 set spelllang=en_us
45 set spellcapcheck=
46
47 " accept first spell check fix
48 map <leader>z 1z=<cr>
49
50 " folding
51 set foldmethod=manual
52 set foldnestmax=10
53 set nofoldenable
54 set foldlevel=2
55
56 " View whitespace
57 map <leader>s :set list!<cr>
58 set listchars=tab:▸\ ,space:·,eol:¬
59
60 " reload vimrc
61 map <leader>r :source ~/.vimrc<cr>:echo "vimrc reloaded"<cr>
62
63 " statusline
64 function! StatusModeColor()
65     if (mode() =~# '\v(n|no)')
66         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Yellow
67     elseif (mode() =~# '\v(v|V)')
68         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Red
69     elseif (mode() ==# 'i')
70         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=LightBlue
71     elseif (mode() ==# 'c') 
72         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Green
73     else
74         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=DarkGrey
75     endif
76
77     return ''
78 endfunction
79
80 function! StatusModifiedColor()
81     if getbufinfo(1)[0].changed
82         hi User1 cterm=None gui=None ctermfg=Black ctermbg=Magenta
83     else
84         hi User1 cterm=None gui=None ctermfg=White ctermbg=Black
85     endif
86
87     return ''
88 endfunction
89
90 function! BufCount()
91     return printf("%d/%d", bufnr("%"), len(getbufinfo({'buflisted':1})))
92 endfunction
93
94 call StatusModeColor()
95 call StatusModifiedColor()
96 autocmd BufWritePost <buffer> call StatusModifiedColor()
97
98 set laststatus=2
99 set statusline=
100 set statusline+=%{StatusModeColor()}
101 set statusline+=%{StatusModifiedColor()}
102 set statusline+=%1*\ | 
103 set statusline+=%0*\ vim\ \[%{mode()}\]
104 set statusline+=\[%{BufCount()}\]
105 set statusline+=\ %1*\ %{expand('%:~:.')}\ %m
106 set statusline+=%=
107 set statusline+=%y
108 set statusline+=\ %0*
109 set statusline+=\ %r\[%{v:register}\]
110 set statusline+=\ %l/%L:%c\ |
111 set statusline+=%1*\ |
112
113 " Templates
114 augroup templates
115     autocmd BufNewFile *.tex 0r ~/.vim/templates/skeleton.tex
116     autocmd BufNewFile *.html 0r ~/.vim/templates/skeleton.html
117     autocmd BufNewFile *.rkt 0r ~/.vim/templates/skeleton.rkt
118     autocmd BufNewFile *.xml 0r ~/.vim/templates/skeleton.xml
119 augroup END
120
121 " vim plug
122 " this blob auto installs vim plug if it isnt already
123 if empty(glob('~/.vim/autoload/plug.vim'))
124    silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
125        \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
126          autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
127          endif
128
129 " template stuff
130 call plug#begin('~/.vim/plugged')
131
132 Plug 'sirver/ultisnips'
133 Plug 'lervag/vimtex'
134 Plug 'PietroPate/vim-tex-conceal'
135 Plug 'jiangmiao/auto-pairs'
136 Plug 'tpope/vim-commentary'
137 Plug 'rlue/vim-barbaric'
138 Plug 'ap/vim-css-color'
139
140 call plug#end()
141
142 " leader for plugins
143 let maplocalleader = "\\"
144
145 " Ultisnips
146 let g:UltiSnipsExpandTrigger = '<tab>'
147 let g:UltiSnipsJumpForwardTrigger = '<tab>'
148 let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
149 let g:UltiSnipsSnippetDirectories=["UltiSnips", "mysnippets"]
150
151 map <localleader>sr :call UltiSnips#RefreshSnippets()<cr>:echo "Refreshed Snippets"<cr>
152
153 " Vimtex
154 let g:tex_flavor='latex'
155 let g:vimtex_view_method='zathura'
156 let g:vimtex_quickfix_mode=0
157 let g:tex_conceal='abdmgs'
158
159 let g:vimtex_compiler_latexmk = {
160     \'build_dir': '/home/pinosaur/.cache/latexaux/',
161 \}
162     " \'options': [
163     " \   '-shell-escape',
164     " \],
165
166 " Ctrlp
167 " let g:ctrlp_cmd='CtrlPTag'
168
169 " Lf
170 " let g:lf_replace_netrw = 1 " weird behavior rn
171
172 " vim-barbaric
173 let g:barbaric_ime = 'ibus'
174 set ttimeoutlen=0
175
176 " Run after plugins
177 autocmd FileType * set formatoptions-=o
178
179 " colors
180 " based off https://github.com/jeffkreeftmeijer/vim-dim/blob/main/colors/default-light.vim
181 hi SpecialKey     ctermfg=4
182 hi TermCursor     cterm=reverse
183 hi NonText        ctermfg=12
184 hi Directory      ctermfg=4
185 hi ErrorMsg       ctermfg=15 ctermbg=1
186 hi IncSearch      cterm=reverse
187 hi MoreMsg        ctermfg=2
188 hi ModeMsg        cterm=bold
189 hi Question       ctermfg=2
190 hi Title          ctermfg=5
191 hi WarningMsg     ctermfg=1
192 hi WildMenu       ctermfg=0 ctermbg=11
193 hi Conceal        ctermbg=0
194 hi SpellBad       ctermfg=9 ctermbg=0 cterm=underline
195 hi SpellRare      ctermbg=13 ctermbg=0 cterm=underline
196 hi SpellLocal     ctermfg=14 ctermbg=0 cterm=underline
197 hi PmenuSbar      ctermbg=8
198 hi PmenuThumb     ctermbg=0
199 hi TabLine        cterm=underline ctermfg=0 ctermbg=7
200 hi TabLineSel     cterm=bold
201 hi TabLineFill    cterm=reverse
202 hi CursorColumn   ctermbg=7
203 hi CursorLine     cterm=underline
204 hi MatchParen     cterm=NONE ctermfg=0 ctermbg=14
205 hi Constant       ctermfg=1
206 hi Special        ctermfg=5
207 hi Identifier     cterm=NONE ctermfg=6
208 hi Statement      ctermfg=3
209 hi PreProc        ctermfg=5
210 hi Type           ctermfg=2
211 hi Underlined     cterm=underline ctermfg=5
212 hi Ignore         ctermfg=15
213 hi Error          ctermfg=15 ctermbg=9
214 hi Todo           ctermfg=0 ctermbg=11
215 hi Comment        ctermfg=7
216 hi lineNr         ctermfg=DarkGrey
217 hi Folded         ctermfg=0
218