dotfiles/.config/vim/vimrc

152 lines
3.4 KiB
VimL

let $PAGER=''
filetype plugin indent on
set nocompatible
" xdg specificaiton stuff {{{
if empty($MYVIMRC) | let $MYVIMRC = expand('<sfile>:p') | endif
set viminfofile=$XDG_CONFIG_HOME/vim/viminfo
set runtimepath^=$XDG_CONFIG_HOME/vim
set runtimepath+=$XDG_DATA_HOME/vim
set runtimepath+=$XDG_CONFIG_HOME/vim/after
set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim
set packpath+=$XDG_CONFIG_HOME/vim/after
let g:netrw_home = $XDG_DATA_HOME."/vim"
set backupdir=$XDG_STATE_HOME/vim/backup
set directory=$XDG_STATE_HOME/vim/swap
set undodir=$XDG_STATE_HOME/vim/undo
set viewdir=$XDG_STATE_HOME/vim/view
" }}}
" appearance {{{
syntax on
set number
set relativenumber
colorscheme dim
hi LineNr cterm=bold
hi StatusLineNC ctermfg=7 ctermbg=0 cterm=none
hi StatusLine cterm=none ctermfg=7
hi VertSplit cterm=none ctermbg=7 ctermfg=7
hi WildMenu cterm=bold ctermfg=15
hi Search ctermfg=0 ctermbg=7
hi TabLineFill cterm=none
hi TabLineSel ctermbg=8
hi CurSearch ctermfg=15 ctermbg=10
hi IncSearch ctermfg=0 ctermbg=7
hi SpellLocal ctermbg=0 ctermfg=3
hi SpellCap ctermbg=0 ctermfg=4
hi SpellBad ctermbg=0 ctermfg=1
hi SpellRare ctermbg=0 ctermfg=6
hi Conceal ctermbg=none ctermfg=none
" }}}
" tabs & windows {{{
noremap <C-t> :tabnew
noremap <C-j> <C-w>w
noremap <C-k> <C-w>W
noremap <C-w><C-h> <C-w><
noremap <C-w><C-l> <C-w>>
noremap <C-w><C-j> <C-w>-
noremap <C-w><C-k> <C-w>+
nnoremap gr gT
nnoremap <Tab> gt
nnoremap <S-Tab> gT
" }}}
" searching & completion {{{
set wildmenu
set lazyredraw
set showmatch
set incsearch
set hlsearch
set ignorecase
set smartcase
set wildignorecase
noremap <C-S-f> :noh<CR>
" }}}
" folding {{{
set foldenable
set foldlevelstart=999
set foldmethod=marker
nnoremap <space> za
" }}}
" input {{{
set noexpandtab
set copyindent
set preserveindent
set tabstop=4
set softtabstop=0
set shiftwidth=4
" quickfix for spelling
inoremap <C-l> <C-g>u<Esc>[s1z=`]a<C-g>u
" }}}
" misc keybinds {{{
" git stuff
map <Leader>1 :diffget LOCAL<CR>
map <Leader>2 :diffget BASE<CR>
map <Leader>3 :diffget REMOTE<CR>
" }}}
" misc. options {{{
set mouse=a
set backspace=indent,eol,start
set whichwrap+=<,>,h,l
set linebreak
set shellredir=>
set copyindent
" }}}
" status bar ugh {{{
set showcmd
set laststatus=2
set statusline=
set statusline+=Buf:\ %-5.3n
set statusline+=%f
set statusline+=%h%m%r%w
set statusline+=\[%{strlen(&ft)?&ft:'none'}]
set statusline+=%=
set statusline+=0x%-8B
set statusline+=%-14(%l,%c%V%)
set statusline+=%<%P
" }}}
" file browsing {{{
let g:netrw_banner=0
let g:netrw_browse_split=4
let g:netrw_altv=1
let g:netrw_liststyle=3
" }}}
"
" vimtex {{{
let g:vimtex_view_method = 'zathura'
let g:vimtex_compiler_method = 'tectonic'
let g:tex_conceal='abdmg'
" }}}
" snippets {{{
let $SNIPPETS="$XDG_CONFIG_HOME/vim/skels"
let g:zensnippets_disable_default_mappings = 1
imap <silent><expr> <Tab> zensnippets#expand()
nmap <silent> <C-\> <Plug>ZensnippetsNextPlaceholder
imap <silent> <C-\> <Esc><Plug>ZensnippetsNextPlaceholder
vmap <silent> <C-\> <Esc><Plug>ZensnippetsNextPlaceholder
" List all available snippets for the current buffer
inoremap <silent> <C-x><C-x><C-\> <C-o>:call zensnippets#showall()<CR>
nnoremap <silent> <C-x><C-x><C-\> :call zensnippets#showall()<CR>
" }}}
" FILETYPE SHIT {{{
autocmd FileType c,cpp,rust setlocal sw=8 ts=8
autocmd FileType rust,python setlocal noet pi
autocmd FileType haskell,tex setlocal et
autocmd FileType tex setlocal sw=2 sts=2 conceallevel=1
" }}}