" ============================================================================== " vimrc file for niblock :: Use `:so %` to re-source after changes " ============================================================================== " ============================================================================== " General Settings " ============================================================================== set nocompatible " Be IMproved (https://goo.gl/2RiJoo) syntax on " Syntax hilighting filetype plugin indent on " Recognize filetype, indent, plugin files set encoding=utf-8 " Character encoding set autoread " Auto-reload files changed outside Vim set hidden " Allow for un-saved buffers set autochdir " Change directory automatically set autoindent " Enable auto-indentation set expandtab " Use spaces instead of tab characters set tabstop=4 " How many spaces a tab is set shiftwidth=4 " How many spaces to shift set softtabstop=4 " How many spaces to use when editing set number " Enable line numbers set wrap " Wrap text set textwidth=80 " How long a line is set winwidth=90 " Minimum width of a window set scrolloff=5 " 5 lines of scroll buffer space set foldmethod=indent " Enable folding on a syntax level set foldlevelstart=99 " Don't start with sections folded set wildmenu " Enable wildmenu set wildmode:longest:full,full " Configure wildmenu set ignorecase smartcase " Search: ignore case, unless case matters set incsearch " Zoom to search results as I type set nohlsearch " Don't highlight search by default let g:netrw_liststyle=3 " Netrw Tree list style let g:netrw_banner=0 " Disable the netrw banner augroup ruby_settings " Settings for Ruby and Ruby-like langs autocmd! autocmd FileType ruby,eruby,yaml \ setlocal shiftwidth=2 \ softtabstop=2 \ makeprg=rubocop augroup END augroup spellcheckr " Spelling, for some files... autocmd! autocmd BufNewFile,BufRead *.md,*.rdoc,*.txt,*.wiki setlocal spell augroup END augroup lintr " Simple linting, based on :make! autocmd! autocmd BufWritePost *.rb,*.sh \ silent make! | silent redraw! autocmd QuickFixCmdPost [^l]* cwindow augroup END " ============================================================================== " Colors " ============================================================================== augroup user_stl_colors " Custom status-line colors autocmd! autocmd ColorScheme * \ hi User1 term=bold cterm=bold ctermfg=Red ctermbg=DarkGrey | \ hi User2 term=bold cterm=bold ctermfg=Cyan ctermbg=DarkGrey | \ hi User3 term=bold cterm=bold ctermfg=White ctermbg=DarkGrey | \ hi User4 ctermfg=White ctermbg=Black | \ hi User5 ctermfg=150 ctermbg=Black augroup END colorscheme minimalist " Set colorscheme " ============================================================================== " Status Line " ============================================================================== function! GitBranch() " Fetch the Git branch of cwd let l:branchname = system("git rev-parse --abbrev-ref HEAD 2>/dev/null \ | tr -d '\n'") return strlen(l:branchname) > 0 ? '#'.l:branchname : '' endfunction set laststatus=2 " Enable the statusline set statusline= " Initialize it set statusline+=%3*%m " Modified flag set statusline+=%4* " Color change (see :hi) set statusline+=\ %F " Full-path to current buffer set statusline+=%5*%{GitBranch()} set statusline+=%= " Switch to right-side set statusline+=%4*%y\ " Filetype set statusline+=%3* " Color change (see :hi) set statusline+=\|%4l\:%2c\| " Line and column set statusline+=%2*%{&spell?'[SPELL]':''} " Spell flag set statusline+=%1*%r%0* " Read-only flag " ============================================================================== " Mappings " ============================================================================== let mapleader = "," " Make moving up/down work on wrapped lines of text nnoremap j gj nnoremap k gk nnoremap ^ g^ nnoremap $ g$ " Toggle fold with space, if we're in a fold, otherwise just space nnoremap @=(foldlevel('.')?'za':"\") vnoremap zf " Allow saving of files as sudo when I forgot to start vim using sudo. cmap w!! w !sudo tee > /dev/null % " Remove Trailing Whitespaace nnoremap rtw :%s/\s\+$//e " Open help topic in a full new tab command! -nargs=1 -complete=help H :tabnew | :set buftype=help | :h " Simple mapping to dotfiles directory (f = current tab; F = new tab) nnoremap f :edit ~/.dotfiles/ nnoremap F :tabnew ~/.dotfiles/ " Emulate vinegar.vim nnoremap - :silent edit =empty(expand('%')) ? '.' : expand('%:p:h') " ============================================================================== " Plugins " ============================================================================== if filereadable(expand("~/.vimrc-plugins")) source ~/.vimrc-plugins endif