""" vim dir in xdg config let x = ($XDG_CONFIG_HOME??($HOME.'/.config')).'/vim' execute 'set runtimepath='.x.','.&runtimepath.','.x.'/after' execute 'set packpath='.x.','.&packpath.','.x.'/after' """ vim-only defaults if !has('nvim') " neovim defaults are already set source $VIMRUNTIME/defaults.vim " packages packadd matchit packadd editorconfig " options set hlsearch set autoindent endif """ dir for state files in xdg state let x = ($XDG_STATE_HOME??($HOME.'/.local/state')).'/vim' if !isdirectory(x) call mkdir(x, 'p', 0700) endif " NOTE: backup files in vim state dir for both vim and neovim let y = x.'/backup' if !isdirectory(y) call mkdir(y, 'p', 0700) endif execute 'set backupdir='.y.'//' set backup backupcopy=yes " NOTE: neovim uses ShaDa (SHAred DAta) format for viminfo and swap, and uses a " different version for undo files, so these types of files when created " by vim cannot be used with neovim, and the 'viminfofile', 'directory', " and 'undodir' directories cannot be shared. " NOTE: neovim has a nice default for these directories and files so " customizing them is not necessary for it. if !has('nvim') " NOTE: 'viminfofile' is a deprecated alias for 'shada' in neovim execute 'set viminfofile='.x.'/.viminfo' let y = x.'/swap' if !isdirectory(y) call mkdir(y, 'p', 0700) endif execute 'set directory='.y.'//' let y = x.'/undo' if !isdirectory(y) call mkdir(y, 'p', 0700) endif execute 'set undodir='.y.'//' endif autocmd BufNew * set undofile unlet x unlet y """ options autocmd VimEnter,WinNew * set number autocmd VimEnter,WinNew * set relativenumber autocmd InsertEnter * set norelativenumber autocmd InsertLeave * set relativenumber autocmd FocusLost * set norelativenumber autocmd FocusGained * set relativenumber autocmd VimEnter,WinNew * set colorcolumn=80 autocmd VimEnter,WinNew * set cursorline autocmd VimEnter,WinNew * set list set listchars=tab:├─,extends:»,precedes:«,space:·,trail:∙,nbsp:■ """ styles highlight ColorColumn term=NONE ctermbg=0 highlight WhiteSpaceMol ctermfg=Black autocmd VimEnter,WinNew * match WhiteSpaceMol / / highlight WhiteSpaceBol ctermfg=DarkBlue autocmd VimEnter,WinNew * 2match WhiteSpaceBol /\(^ \+\)\|\( \+$\)/ """ indent autocmd FileType python set softtabstop=4 shiftwidth=4 expandtab autocmd FileType markdown set softtabstop=4 shiftwidth=4 expandtab autocmd FileType javascript set softtabstop=2 shiftwidth=2 expandtab autocmd FileType json set softtabstop=2 shiftwidth=2 expandtab autocmd FileType html set softtabstop=2 shiftwidth=2 expandtab let g:EditorConfig_enable_for_new_buf = 1 """ syntax autocmd FileType todo set colorcolumn=0 """ mappings "" use more accessible escapes, as C-n and C-o are shadowed by some terminals if has('nvim') tnoremap n tnoremap o endif "" move windows any time if has('nvim') " terminal tnoremap h tnoremap j tnoremap k tnoremap l endif " insert inoremap h inoremap j inoremap k inoremap l " normal nnoremap h nnoremap j nnoremap k nnoremap l