infra/nix/home-manager/programs/neovim/vimrc

254 lines
5.7 KiB
VimL

set nocompatible
set mouse=
" Enable Elite mode, No ARRRROWWS!!!!
let g:elite_mode=1
if get(g:, 'elite_mode')
nnoremap <Up> :resize +2<CR>
nnoremap <Down> :resize -2<CR>
nnoremap <Left> :vertical resize +2<CR>
nnoremap <Right> :vertical resize -2<CR>
endif
nnoremap <expr>K getline('.')[col('.')-1]==' ' ? "r<CR>" : "i<CR><Esc>"
" Enable highlighting of the current line
set cursorline
" leader
let mapleader = ','
let maplocalleader = ','
" save on ctrl-s
nnoremap <c-s> :w<CR>
inoremap <c-s> <Esc>:w<CR>
set hidden
syntax on
set hlsearch
set ignorecase
set smartcase
set number
" mappings to stop insert mode
imap jjj <ESC>
imap kkk <ESC>
imap lll <ESC>
imap hhh <ESC>
set scroll=11
" new mappings
noremap <C-j> <C-f>
noremap <C-k> <C-u>
noremap <C-n> :tabn<CR>
noremap <C-p> :tabp<CR>
let g:ctrlp_map = '<tab>'
set wildignore+=*/site/*,*.so,*.swp,*.zip
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn)$$',
\ 'file': '\v\.(exe|so|dll)$$',
\ }
"let g:ctrlp_max_files=0
"let g:ctrlp_max_depth=1000
"let g:ctrlp_match_func = { 'match': 'pymatcher#PyMatch' }
"let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict'
" always show status line
set ls=2
" let g:airline#extensions#tabline#formatter = 'default'
" let g:airline#extensions#tabline#enabled=1
let g:airline_theme='papercolor'
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"set textwidth=80
set backspace=indent,eol,start
set wildignore+=*/site/*,*.so,*.swp,*.zip
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn|)$$',
\ 'file': '\v\.(exe|so|dll)$$',
\ }
" }
" spelling {{{
au BufRead,BufNewFile *.txt,*.tex,*.md,*.markdown setlocal spell spelllang=en_us,de_de
" }}}
" sync default register to clipboard {
if has('unnamedplus')
set clipboard=unnamedplus
else
set clipboard=unnamed
endif
" }
" colored brackets {
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
" }
set t_ut=
set background=light
colorscheme PaperColor
" Python {{{
augroup ft_python
au!
au FileType python setlocal omnifunc=pythoncomplete#Complete
au FileType python setlocal define=^\s*\\(def\\\\|class\\)
augroup END
" }}}
" YAML {{{
augroup ft_yaml
au!
setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
augroup END
" }}}
" markdown {
augroup filetypedetect
" gitit page files
au BufRead,BufNewFile *.page set filetype=markdown
augroup END
" Cycle between the valid list item markers *, - and + in the TOC
let g:vmt_cycle_list_item_markers = 1
" } markdown
let g:indent_guides_enable_on_vim_startup = 1
"bazel
augroup filetypedetect
au BufRead,BufNewFile *.bazel set filetype=bzl
augroup END
"Justfile
augroup filetypedetect
au BufRead,BufNewFile Justfile set filetype=make
augroup END
augroup VCenterCursor
au!
au BufEnter,WinEnter,WinNew,VimResized *,*.*
\ let &scrolloff=winheight(win_getid())/2
augroup END
" " deoplete {
" let g:deoplete#enable_at_startup = 1
" let g:deoplete#num_processes = 1
" let g:deoplete#enable_smart_case = 1
"
" if !exists('g:deoplete#omni#input_patterns')
" let g:deoplete#omni#input_patterns = {}
" endif
" let g:deoplete#omni#input_patterns.tex = g:vimtex#re#deoplete
" " } deoplete
" enable ncm2 for all buffers
autocmd BufEnter * call ncm2#enable_for_buffer()
set completeopt=noinsert,menuone,noselect
" LanguageClient {
set hidden
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'stable', 'rls'],
\ 'javascript.jsx': ['tcp://127.0.0.1:2089'],
\ }
" \ 'javascript': ['/usr/local/bin/javascript-typescript-stdio'],
" \ 'python': ['/usr/local/bin/pyls'],
nnoremap <F5> :call LanguageClient_contextMenu()<CR>
" Or map each action separately
nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
" }
let g:vimtex_view_method = 'zathura'
let g:vimtex_complete_enabled = 1
let g:vimtex_complete_close_braces = 1
let g:vimtex_complete_recursive_bib = 1
let g:vimtex_indent_enabled = 1
let g:vimtex_indent_bib_enabled = 1
let g:vimtex_fold_enabled = 1
let g:vimtex_fold_comments = 1
let g:vimtex_fold_preamble = 1
let g:vimtex_compiler_latexmk = {
\ 'options' : [
\ '-shell-escape',
\ '-pdf',
\ '-verbose',
\ '-file-line-error',
\ '-synctex=1',
\ '-interaction=nonstopmode',
\ ],
\}
let g:vimtex_quickfix_latexlog = {
\ 'default' : 1,
\ 'general' : 1,
\ 'references' : 1,
\ 'overfull' : 0,
\ 'underfull' : 0,
\ 'font' : 0,
\ 'packages' : {
\ 'default' : 1,
\ 'natbib' : 1,
\ 'biblatex' : 1,
\ 'babel' : 1,
\ 'hyperref' : 1,
\ 'scrreprt' : 1,
\ 'fixltx2e' : 1,
\ 'titlesec' : 1,
\ },
\}
function! ViewerCallback() dict
call self.forward_search(self.out())
endfunction
let g:vimtex_view_zathura_hook_callback = 'ViewerCallback'
let g:vimtex_view_general_callback = 'ViewerCallback'
let g:vimtex_compiler_progname = '${pkgs.neovim-remote}/bin/nvr'
let g:tex_flavor = 'latex'
" } latex
" terminal {
tnoremap <Esc> <C-\><C-n>
" } terminal
" allow per-project vimrc
" TODO: only source if it exists
" source .vimrc