vimrc clean + snippets
[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 encoding=utf-8
14 set tabstop=4
15 set shiftwidth=4
16 set expandtab
17 set ignorecase
18 set smartcase
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 " netrw 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 " file finding
43 set path=**
44 set wildmenu
45
46 " spell check
47 setlocal spell
48 set spelllang=en_us
49 set spellcapcheck=
50
51 " use s as prefix for spell check related commands
52 map s <nop>
53 map sf 1z=<cr>
54 map sn ]s
55 map sN [s
56 map sa zg
57 map sd zw
58
59 " folding
60 set foldmethod=manual
61 set foldnestmax=10
62 set nofoldenable
63 set foldlevel=2
64
65 " View whitespace
66 map <leader>s :set list!<cr>
67 set listchars=tab:▸\ ,space:·,eol:¬
68
69 " reload vimrc
70 map <leader>r :source ~/.vimrc<cr>:echo "vimrc reloaded"<cr>
71
72 " write with sudo
73 cmap w!! w !sudo tee > /dev/null %
74
75 " reload current file
76 map <leader>e :e<cr>:echo "current file reloaded"<cr>
77 map <leader>E :e!<cr>:echo "current file force reloaded"<cr>
78
79 " statusline
80 function! StatusModeColor()
81     if (mode() =~# '\v(n|no)')
82         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Yellow
83     elseif (mode() =~# '\v(v|V|\16)')
84         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Red
85     elseif (mode() ==# 'i')
86         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=LightBlue
87     elseif (mode() ==# 'c') 
88         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Green
89     else
90         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=DarkGrey
91     endif
92 endfunction
93
94 function! StatusModifiedColor()
95     if &mod
96         hi User1 cterm=None gui=None ctermfg=Black ctermbg=Magenta
97     else
98         hi User1 cterm=None gui=None ctermfg=White ctermbg=Black
99     endif
100 endfunction
101
102 function! ReloadBar()
103     call StatusModeColor()
104     call StatusModifiedColor()
105     return ''
106 endfunction
107
108 function! BufCount()
109     return printf("%d/%d", bufnr("%"), len(getbufinfo({'buflisted':1})))
110 endfunction
111
112 autocmd BufEnter * call ReloadBar()
113 autocmd BufWritePost <buffer> call ReloadBar()
114
115 set laststatus=2
116 set statusline=
117 set statusline+=%{ReloadBar()}
118 set statusline+=%1*\ | 
119 set statusline+=%0*\ vim\ \[%{mode()}\]
120 set statusline+=\[%{BufCount()}\]
121 set statusline+=\ %1*\ %{expand('%:~:.')}\ %m
122 set statusline+=%=
123 set statusline+=%y
124 set statusline+=\ %0*
125 set statusline+=\ %r\[%{v:register}\]
126 set statusline+=\ %l/%L:%c\ |
127 set statusline+=%1*\ |
128
129 " Tab line
130 hi TabLineSel   cterm=Bold ctermfg=Yellow
131 hi TabLine      cterm=None ctermfg=Grey ctermbg=Black
132 hi TabLineFill  cterm=None ctermbg=Black
133
134 " Templates
135 augroup templates
136     autocmd BufNewFile *.tex 0r ~/.vim/templates/skeleton.tex
137     autocmd BufNewFile *.html 0r ~/.vim/templates/skeleton.html
138     autocmd BufNewFile *.rkt 0r ~/.vim/templates/skeleton.rkt
139     autocmd BufNewFile *.xml 0r ~/.vim/templates/skeleton.xml
140 augroup END
141
142 " highlighting (will get rid of this sometime prob)
143 au BufRead,BufNewFile *.svelte set filetype=svelte
144 au! Syntax svelte source ~/.vim/syntax/svelte.vim
145
146 au BufRead,BufNewFile *.shader set filetype=glsl
147 au! Syntax svelte source ~/.vim/syntax/glsl.vim
148
149 " vim plug
150 " this blob auto installs vim plug if it isnt already
151 fun! s:VimPlugSetup()
152     if empty(glob('~/.vim/autoload/plug.vim'))
153         silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
154         autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
155     else
156         echo 'VimPlug is already installed'
157     endif
158 endfun
159 command PlugSetup :call s:VimPlugSetup()
160
161 " template stuff
162 call plug#begin('~/.vim/plugged')
163
164 Plug 'sirver/ultisnips'
165 Plug 'tpope/vim-commentary'
166 Plug 'ap/vim-buftabline'
167 Plug 'lervag/vimtex', { 'for': 'tex' }
168 Plug 'PietroPate/vim-tex-conceal', { 'for': 'tex' }
169 Plug 'takac/vim-hardtime'
170
171 call plug#end()
172
173 " leader for plugins
174 let maplocalleader = "\\"
175
176 " Ultisnips
177 let g:UltiSnipsExpandTrigger = '<tab>'
178 let g:UltiSnipsJumpForwardTrigger = '<tab>'
179 let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
180 let g:UltiSnipsSnippetDirectories=["UltiSnips", "mysnippets"]
181
182 map <localleader>sr :call UltiSnips#RefreshSnippets()<cr>:echo "Refreshed Snippets"<cr>
183
184 " latex stuff
185 " fun! LatexCompile()
186 "     echo 'compiling latex'
187 " endfun
188 " augroup latex
189 "     autocmd!
190 "     autocmd BufWritePost *.tex :call LatexCompile()
191 " augroup END
192
193 " Vimtex
194 let g:tex_flavor='latex'
195 let g:vimtex_view_method='zathura'
196 let g:vimtex_quickfix_mode=0
197 let g:tex_conceal='abdmgs'
198
199 let g:vimtex_compiler_latexmk = {
200     \'build_dir': '/home/pinosaur/.cache/latexaux/',
201     \'options': [
202     \   '-shell-escape',
203     \],
204 \}
205
206 " buftabline
207 let g:buftabline_show = 1
208
209 " hardtime
210 let g:hardtime_default_on = 1
211 let g:hardtime_maxcount = 2
212
213 " Run after plugins
214 autocmd FileType * set formatoptions-=o
215
216 " colors
217 " based off https://github.com/jeffkreeftmeijer/vim-dim/blob/main/colors/default-light.vim
218 hi SpecialKey     ctermfg=4
219 hi TermCursor     cterm=reverse
220 hi NonText        ctermfg=12
221 hi Directory      ctermfg=4
222 hi ErrorMsg       ctermfg=15 ctermbg=1
223 hi IncSearch      cterm=reverse
224 hi MoreMsg        ctermfg=2
225 hi ModeMsg        cterm=bold
226 hi Question       ctermfg=2
227 hi Title          ctermfg=5
228 hi WarningMsg     ctermfg=1
229 hi WildMenu       ctermfg=0 ctermbg=11
230 hi Conceal        ctermbg=0
231 hi SpellBad       ctermfg=9 ctermbg=0 cterm=underline
232 hi SpellRare      ctermbg=13 ctermbg=0 cterm=underline
233 hi SpellLocal     ctermfg=14 ctermbg=0 cterm=underline
234 hi PmenuSbar      ctermbg=8
235 hi PmenuThumb     ctermbg=0
236 hi CursorColumn   ctermbg=7
237 hi CursorLine     cterm=underline
238 hi MatchParen     cterm=NONE ctermfg=0 ctermbg=14
239 hi Constant       ctermfg=1
240 hi Special        ctermfg=5
241 hi Identifier     cterm=NONE ctermfg=6
242 hi Statement      ctermfg=3
243 hi PreProc        ctermfg=5
244 hi Type           ctermfg=2
245 hi Underlined     cterm=underline ctermfg=5
246 hi Ignore         ctermfg=15
247 hi Error          ctermfg=15 ctermbg=9
248 hi Todo           ctermfg=0 ctermbg=11
249 hi Comment        ctermfg=DarkGrey
250 hi lineNr         ctermfg=DarkGrey
251 hi Folded         ctermfg=0
252 hi Pmenu          ctermfg=0 ctermbg=7
253 hi PmenuSel       ctermfg=0 ctermbg=6
254