vimrc/init.vim

122 lines
3.2 KiB
VimL

" set the directory where vimrc git project is located
let vimrc_git=$HOME . "/src/vimrc"
" it is a big fat key, after all
" N.B. should come before plugins and plugin specific settings
let mapleader = "\<Space>"
" source aux files also under git control
let oldwd = getcwd()
exec "cd " . vimrc_git
source plug.vim
source airline.vim
source syntastic.vim
source fzf.vim
source lsp.vim
source mapping.vim
source jsonnet.vim
source nerdtree.vim
source wiki.vim
source prettier.vim
exec "cd " . oldwd
" set up a line number on the current line but relative above and below to help
" with motion commands
set number
set relativenumber
" even with the nice space/tab autodetect, prefer 4 for tab stops
" but let file type specifics override (for instance a setting of 2 for markdown
set tabstop=4
" default to folding on syntax
set foldmethod=syntax
" disable automatic line breaks, rely on visual wrapping instead
set textwidth=0
" make white space visible, where that matters
set list!
" except for help
autocmd FileType help setlocal nolist
" set up folding preferences
set fde=1
" vim's spelling is smart enough for code, to only check comments
set spell
" add a hint for long lines
set colorcolumn=120
" default to expanding tabs, I'm not insane
set expandtab
" change buffer behaviors to no longer require changes when hiding a buffer
set hidden
" look for vimrc in the current director as well as $MYVIMRC
set exrc
" make looking for local changes secure
set secure
" more secure
set modelines=0
" preserve some context
set scrolloff=3
" make the cursor a bit easier to follows
set cursorline
" make search work a bit more like tab completion in bash
set incsearch
set wildmode=longest:full
set wildmenu
" line break handling
set linebreak
set showbreak=+
" always on status line
set laststatus=2
" let backspace work more naturally
set backspace=start,indent,eol
" favor modern encoding
set enc=utf-8
" more readable config for list mode
set listchars+=nbsp,tab:»·,trail
set listchars-=eol:$
" smarter handling of case during search
set ignorecase
set smartcase
" centralize swap to have backup without clutter
set directory=$HOME/.var/nvim/swp//
" and undo
set undofile
set undodir=$HOME/.nvim/undodir
" make pastemode more accessible
set pastetoggle=<F2>
" save when moving away
au FocusLost * :wa
" make sure to set TERM to xterm-256color in terminal program or app
colorscheme breezy
set background=light
set termguicolors
" ensure autoread works, to detect file changes outside the editor
set autoread
au CursorHold * checktime
" for gui, make it easier to tell different instances apart
set title
" keep nvim from resetting font back to default from terminal config
set guicursor=
set guioptions-=r
set guioptions-=b
set guioptions-=T
set guioptions-=m
set gfn=DejaVu\ Sans\ Mono\ for\ Powerline:h13
" from https://stackoverflow.com/a/51424640
let s:fontsize = 13
function! AdjustFontSize(amount)
let s:fontsize = s:fontsize+a:amount
:execute "set gfn=DejaVu\\ Sans\\ Mono\\ for\\ Powerline:h" . s:fontsize
endfunction
noremap <C-Up> :call AdjustFontSize(1)<CR>
noremap <C-Down> :call AdjustFontSize(-1)<CR>
inoremap <C-Up> <Esc>:call AdjustFontSize(1)<CR>a
inoremap <C-Down> <Esc>:call AdjustFontSize(-1)<CR>a