" Sensible.vim if exists('g:loaded_sensible') || &compatible else let g:loaded_sensible = 1 if has('autocmd') filetype plugin indent on endif if has('syntax') && !exists('g:syntax_on') syntax enable endif " Use :help 'option' to see the documentation for the given option. set autoindent set backspace=indent,eol,start set complete-=i set smarttab set nrformats-=octal set ttimeout set ttimeoutlen=100 set incsearch " Use to clear the highlighting of :set hlsearch. if maparg('', 'n') ==# '' nnoremap :nohlsearch=has('diff')?'diffupdate':'' endif set laststatus=2 set ruler set wildmenu if !&scrolloff set scrolloff=1 endif if !&sidescrolloff set sidescrolloff=5 endif set display+=lastline if &encoding ==# 'latin1' && has('gui_running') set encoding=utf-8 endif if &listchars ==# 'eol:$' set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ endif if v:version > 703 || v:version == 703 && has("patch541") set formatoptions+=j " Delete comment character when joining commented lines endif if has('path_extra') setglobal tags-=./tags tags-=./tags; tags^=./tags; endif if &shell =~# 'fish$' && (v:version < 704 || v:version == 704 && !has('patch276')) set shell=/bin/bash endif set autoread if &history < 1000 set history=1000 endif if &tabpagemax < 50 set tabpagemax=50 endif if !empty(&viminfo) set viminfo^=! endif set sessionoptions-=options " Allow color schemes to do bright colors without forcing bold. if &t_Co == 8 && $TERM !~# '^linux\|^Eterm' set t_Co=16 endif " Load matchit.vim, but only if the user hasn't installed a newer version. if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' runtime! macros/matchit.vim endif inoremap u endif " change terminal title set title " xdg-ish settings set undodir=~/.cache/vim/undo,. set backupdir=~/.cache/vim/backup,. set directory=~/.cache/vim/swap//,. " default indentation set shiftwidth=2 set tabstop=4 set expandtab " permanent undo history set undofile " allow switching buffers set hidden " always scroll set scrolloff=99 " show line numbers set number set relativenumber " set wordwrap indent set nowrap set linebreak if exists("&breakindent") set breakindent set breakindentopt=shift:2,sbr endif " show whitespace set list " make a new copy of the file for backup " setting to no or auto messes with filewatchers set backupcopy=yes " disable modelines set nomodeline " ------ key bindings ------ " ; as : nnoremap ; : vnoremap ; : " allow via jj in insert mode inoremap jj " fix j/k with wraps nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk augroup formatting au! " strip trailing whitespace autocmd BufWritePre * :%s/\s\+$//e autocmd FileType markdown :set tw=80 augroup end if filereadable(expand('~/.vimrc.local')) source ~/.vimrc.local endif highlight StatusLine cterm=NONE ctermbg=8 highlight StatusLineNC cterm=NONE ctermbg=0 highlight StatusLineModeInsert ctermbg=14 ctermfg=0 highlight StatusLineModeVisual ctermbg=3 ctermfg=0 highlight StatusLineModeNormal ctermbg=11 ctermfg=0 function GetMode() let m = mode() " echom m if m ==# 'i' return '%#StatusLineModeInsert# I ' elseif m =~# '\(v\|V\|\)' return '%#StatusLineModeVisual# V ' else return '%#StatusLineModeNormal# N ' endif endfunction function StatusLine() let line='' let line.=GetMode() let line.='%*%< %f %h%m%r' let line.='%=' " let line.='%-14.(%l,%c%V%) %P' let line.=' %y ' let line.=' %{&fenc}[%{&ff}]' let line.=' %3p%% %7(%l/%L%): %3(%c%V%) ' return line endfunction set statusline=%!StatusLine()