update
[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
19 " spell check
20 setlocal spell
21 set spelllang=en_us
22 set spellcapcheck=
23
24 " conceal
25 set conceallevel=2
26
27 " Bindings
28 let mapleader = ' '
29
30 " File stuff
31 map <leader>f :Ex<cr>
32 map <leader>l :bn<cr>
33 map <leader>h :bp<cr>
34 map <leader>d :bd<cr>
35
36 let g:netrw_liststyle = 3
37 let g:netrw_banner = 0
38 let g:netrw_winsize = 25
39
40 " View whitespace
41 map <leader>s :set list!<cr>
42 set lcs=space:ยท
43
44 " colors
45 hi Conceal ctermbg=Black
46 hi SpellBad ctermfg=Red ctermbg=Black cterm=underline
47
48 " statusline
49 function! StatusModeColor()
50     if (mode() =~# '\v(n|no)')
51         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Yellow
52     elseif (mode() =~# '\v(v|V)')
53         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Red
54     elseif (mode() ==# 'i')
55         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=LightBlue
56     elseif (mode() ==# 'c') 
57         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=Green
58     else
59         hi StatusLine cterm=None gui=None ctermfg=black ctermbg=DarkGrey
60     endif
61     
62     return ''
63 endfunction
64
65 function! StatusModifiedColor()
66     if getbufinfo(1)[0].changed
67         hi User1 cterm=None gui=None ctermfg=Black ctermbg=Magenta
68     else
69         hi User1 cterm=None gui=None ctermfg=White ctermbg=Black
70     endif
71
72     return ''
73 endfunction
74
75 function! BufCount()
76     return printf("%d/%d", bufnr("%"), len(getbufinfo({'buflisted':1})))
77 endfunction
78
79 call StatusModeColor()
80 call StatusModifiedColor()
81 autocmd BufWritePost <buffer> call StatusModifiedColor()
82
83 set laststatus=2
84 set statusline=
85 set statusline+=%{StatusModeColor()}
86 set statusline+=%{StatusModifiedColor()}
87 set statusline+=%1*\ | 
88 set statusline+=%0*\ vim\ \[%{mode()}\]
89 set statusline+=\[%{BufCount()}\]
90 set statusline+=\ %1*\ %{expand('%:~:.')}\ %m
91 set statusline+=%=
92 set statusline+=%y
93 set statusline+=\ %0*
94 set statusline+=\ %r\[%{v:register}\]
95 set statusline+=\ %l/%L:%c\ |
96 set statusline+=%1*\ |
97
98 " Templates
99 augroup templates
100     autocmd BufNewFile *.tex 0r ~/.vim/templates/skeleton.tex
101     autocmd BufNewFile *.html 0r ~/.vim/templates/skeleton.html
102     autocmd BufNewFile *.rkt 0r ~/.vim/templates/skeleton.rkt
103 augroup END
104
105 " vim plug
106 " this blob auto installs vim plug if it isnt already
107 if empty(glob('~/.vim/autoload/plug.vim'))
108    silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
109        \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
110          autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
111          endif
112
113 " template stuff
114 call plug#begin('~/.vim/plugged')
115
116 Plug 'sirver/ultisnips'
117 Plug 'lervag/vimtex'
118 Plug 'PietroPate/vim-tex-conceal'
119 Plug 'jiangmiao/auto-pairs'
120 Plug 'tpope/vim-commentary'
121 " Plug 'ptzz/lf.vim'
122 " Plug 'voldikss/vim-floaterm'
123
124 call plug#end()
125
126 " Ultisnips
127 let g:UltiSnipsExpandTrigger = '<tab>'
128 let g:UltiSnipsJumpForwardTrigger = '<tab>'
129 let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
130 let g:UltiSnipsSnippetDirectories=["UltiSnips", "mysnippets"]
131
132 " Vimtex
133 let g:tex_flavor='latex'
134 let g:vimtex_view_method='zathura'
135 let g:vimtex_quickfix_mode=0
136 let g:tex_conceal='abdmgs'
137
138 let g:vimtex_compiler_latexmk = {
139     \'build_dir': '/home/pinosaur/.cache/latexaux/',
140 \}
141
142 " Ctrlp
143 " let g:ctrlp_cmd='CtrlPTag'
144
145 " Lf
146 " let g:lf_replace_netrw = 1 " weird behavior rn
147
148 " Run after plugins
149 autocmd FileType * set formatoptions-=o