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