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