dotfiles/vim/vimrc

131 lines
6.3 KiB
VimL
Raw Normal View History

2017-02-22 01:16:16 +00:00
" ==============================================================================
" vimrc file for niblock :: Use `:so %` to re-source after changes
" ==============================================================================
" ==============================================================================
" General Settings
" ==============================================================================
2017-09-14 21:51:40 +00:00
set nocompatible " Why? (https://goo.gl/2RiJoo)
if !exists('g:syntax_on')
2017-09-14 21:51:40 +00:00
syntax enable " Syntax hilighting
endif
2017-09-14 21:51:40 +00:00
filetype plugin indent on " Enable filetype/indent/plugins
set encoding=utf-8 " Character encoding
set spelllang=en_us " Set default dictionary
2017-09-14 21:51:40 +00:00
set autoread " Auto-reload modified files
set hidden " Allow for un-saved buffers
set autochdir " Change directory automatically
2017-02-22 01:16:16 +00:00
2017-09-14 21:51:40 +00:00
set autoindent " Enable auto-indentation
set expandtab " Spaces for tab
set shiftwidth=4 " Spaces per shift
set softtabstop=4 " Spaces to use when editing
2017-08-15 13:41:19 +00:00
2017-09-14 21:51:40 +00:00
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 line scroll buffer
2017-02-22 01:16:16 +00:00
2017-09-14 21:51:40 +00:00
set foldmethod=indent " Fold on indent
set foldlevelstart=99 " No default folding
2017-02-22 01:16:16 +00:00
2017-09-14 21:51:40 +00:00
set wildmenu " Enable wildmenu
set wildmode:longest:full,full " Configure wildmenu
set ignorecase smartcase " Ignore case, unless it matters
set incsearch " Zoom to results as I search
set nohlsearch " Disable search highlighting
2017-02-22 01:16:16 +00:00
2017-09-14 21:51:40 +00:00
let g:netrw_liststyle=3 " Netrw Tree list style
let g:netrw_banner=0 " Disable the netrw banner
2017-09-14 21:51:40 +00:00
augroup ruby_settings " Custom settings: Ruby{-like}
2016-10-09 00:02:14 +00:00
autocmd!
2017-08-15 13:41:19 +00:00
autocmd FileType ruby,eruby,yaml
\ setlocal shiftwidth=2
\ softtabstop=2
2017-08-15 22:37:22 +00:00
\ makeprg=rubocop
2016-10-09 00:02:14 +00:00
augroup END
2015-04-11 20:14:53 +00:00
2017-09-14 21:51:40 +00:00
augroup spellcheckr " Spelling, for some files...
2017-02-22 01:16:16 +00:00
autocmd!
autocmd BufNewFile,BufRead *.md,*.rdoc,*.txt,*.wiki
\ setlocal spell
2017-01-28 01:52:36 +00:00
augroup END
2017-09-14 21:51:40 +00:00
augroup lintr " Linting, based on :make!
autocmd!
2017-08-15 13:41:19 +00:00
autocmd BufWritePost *.rb,*.sh
\ silent make! <afile> | silent redraw!
autocmd QuickFixCmdPost [^l]* cwindow
augroup END
" ==============================================================================
2017-08-16 23:53:05 +00:00
" Colors
" ==============================================================================
augroup user_stl_colors " Custom status-line colors
autocmd!
autocmd ColorScheme *
2017-08-17 00:40:50 +00:00
\ 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 |
2017-08-29 16:42:39 +00:00
\ hi User4 ctermfg=White ctermbg=Black |
\ hi User5 ctermfg=150 ctermbg=Black |
\ hi User6 ctermfg=Grey ctermbg=Black
2017-08-16 23:53:05 +00:00
augroup END
2017-09-14 21:51:40 +00:00
if filereadable(expand('~/.vim/colors/minimalist.vim'))
colorscheme minimalist " Set colorscheme
endif
2017-08-16 23:53:05 +00:00
" ==============================================================================
" Status Line
" ==============================================================================
function! GitBranch() abort " Fetch the Git branch of cwd
2017-08-29 16:42:39 +00:00
let l:branchname = system("git rev-parse --abbrev-ref HEAD 2>/dev/null
\ | tr -d '\n'")
return strlen(l:branchname) > 0 ? '#'.l:branchname : ''
endfunction
2017-05-23 03:57:51 +00:00
set laststatus=2 " Enable the statusline
set statusline= " Initialize it
2017-08-16 23:53:05 +00:00
set statusline+=%3*%m " Modified flag
set statusline+=%6*%{expand('%:p:h')}/ " Full-path to current buffer
set statusline+=%4*%t " File name
2017-08-29 23:13:01 +00:00
set statusline+=%5*%{GitBranch()} " Show Git branch, if applicable
2017-05-23 03:57:51 +00:00
set statusline+=%= " Switch to right-side
2017-08-29 16:42:39 +00:00
set statusline+=%4*%y\ " Filetype
2017-08-15 13:41:19 +00:00
set statusline+=%3* " Color change (see :hi)
2017-05-23 03:57:51 +00:00
set statusline+=\|%4l\:%2c\| " Line and column
2017-08-16 23:53:05 +00:00
set statusline+=%2*%{&spell?'[SPELL]':''} " Spell flag
set statusline+=%1*%r%0* " Read-only flag
2017-02-22 01:16:16 +00:00
" ==============================================================================
" Mappings
" ==============================================================================
2017-09-14 21:51:40 +00:00
let mapleader = ','
2016-08-20 23:51:09 +00:00
" Make moving up/down work on wrapped lines of text
nnoremap <silent> j gj
nnoremap <silent> k gk
nnoremap <silent> ^ g^
nnoremap <silent> $ g$
" Toggle fold with space if we're in a fold, otherwise just space
2017-02-22 01:16:16 +00:00
nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
vnoremap <Space> zf
2015-05-24 19:40:04 +00:00
" Allow saving of files as sudo when I forgot to start vim using sudo.
cmap w!! w !sudo tee > /dev/null %
2015-11-06 22:55:09 +00:00
" Remove Trailing Whitespaace
2017-09-14 21:51:40 +00:00
nnoremap <silent> <leader>rtw :<C-u>%s/\s\+$//e<CR>
" Open help topic in a full new tab
2017-01-28 01:52:36 +00:00
command! -nargs=1 -complete=help H :tabnew | :set buftype=help | :h <args>
2017-05-26 21:49:22 +00:00
" Simple mapping to dotfiles directory (f = current tab; F = new tab)
2017-09-14 21:51:40 +00:00
nnoremap <silent> <leader>f :<C-u>edit ~/.dotfiles/<CR>
nnoremap <silent> <leader>F :<C-u>tabnew ~/.dotfiles/<CR>
" Emulate vim-vinegar
nnoremap <silent> - :silent edit <C-R>=empty(expand('%')) ? '.' : expand('%:p:h')<CR><CR>
2017-02-22 01:16:16 +00:00
" ==============================================================================
" Plugins
" ==============================================================================
2017-09-14 21:51:40 +00:00
if filereadable(expand('~/.vimrc-plugins'))
2017-02-22 01:16:16 +00:00
source ~/.vimrc-plugins
endif