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