vimfiles/vimrc
2015-03-02 16:39:09 +01:00

189 lines
4.9 KiB
VimL

" lloeki's vimrc
"bundle loading via vundle
source ~/.vim/bundles.vim
scriptencoding "utf-8"
"security measure
set modelines=0
let g:secure_modelines_leave_modeline=1
let g:secure_modelines_verbose=1
" prevent .netrwhist creation
let g:netrw_dirhistmax = 0
"make sure backspace behaves
set backspace=indent,eol,start
"shorten esc timeout
set timeout
set timeoutlen=1000
set ttimeoutlen=50
"airline
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_left_sep=''
let g:airline_right_sep=''
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.branch = '⎇'
"terminal behavior and appearance
if !has('gui_running')
set showtabline=1 "automatic tab bar
set mouse=n "mouse support
set background=light
"use terminal background
hi Normal ctermbg=none
hi todo ctermbg=none
hi statement ctermbg=none
endif
"ignore some files
set wildignore+=*.o,*.obj,*.pyc
set wildignore+=.git,.svn
set wildignore+=env,venv*
"display more info
set showmode "display current mode at the bottom
set showcmd "display command info at the bottom
set ruler "display coordinates and relative position at the bottom
set number "show line numbers in left margin
set laststatus=2
" search tweaks
set incsearch
set ignorecase "ignore case when searching
set smartcase "... but be nice when actually typing caps
" tabbing settings
set shiftwidth=4 "indent size
set shiftround "round indent to next offset
set tabstop=4 "size of tab character
set expandtab "insert spaces instead of tab
set softtabstop=4 "... and that much spaces are inserted
set smarttab "tab insertion actually indents on line start
set autoindent "new line copies indent from above
"feedback
"set cursorline "highlight current line
set showmatch "highlight both matching parentheses
set listchars=eol,tab:→\ ,nbsp:•,trail
set list
"OS clipboard integration
set clipboard^=unnamed
"filetype/language specific settings
autocmd FileType make set noexpandtab "makefiles need tabs
autocmd FileType ruby set softtabstop=2 shiftwidth=2
autocmd FileType eruby set softtabstop=2 shiftwidth=2
autocmd FileType coffee set softtabstop=4 shiftwidth=4
au BufRead,BufNewFile Guardfile setfiletype ruby
au BufRead,BufNewFile *.skim setfiletype slim
au BufRead,BufNewFile *.opal setfiletype ruby
let g:syntastic_ruby_checkers = ['mri', 'rubocop']
let g:go_fmt_command = "goimports"
if expand('%:t') =~? 'rfc\d\+' || expand('%:t') =~? 'draft-.*-\d\{2,}'
setfiletype rfc
set textwidth=72
endif
"notify line over length
function HighlightOverLength(len)
highlight OverLength ctermbg=blue ctermfg=white guibg=#59292
execute 'match OverLength /\%'.(a:len+1).'v.\+/'
endfunction
autocmd FileType vim call HighlightOverLength(79)
autocmd FileType ruby call HighlightOverLength(79)
autocmd FileType slim call HighlightOverLength(79)
autocmd FileType python call HighlightOverLength(79)
autocmd FileType mdown call HighlightOverLength(79)
"swap/undo files
set dir=~/.vim/tmp/swap//,/var/tmp//,/tmp//,.
"set undodir=~/.vim/tmp/undo//,.
"buffer management
set swb=usetab "make :sb <filename> go to tabs too
"key mappings
let mapleader = ','
set hlsearch
map <leader>c :nohlsearch<CR>
map <leader>t :NERDTreeToggle<CR>
map <leader>b :CtrlPBuffer<CR>
map <leader>r :CtrlPTag<CR>
map <leader>p :CtrlP<CR>
"SuperTab options
let g:SuperTabDefaultCompletionType = "context"
" Complete options (disable preview scratch window)
set completeopt=menu,menuone,longest
" Limit popup menu height
set pumheight=15
"OmniComplete
let g:rubycomplete_buffer_loading = 1
let g:rubycomplete_classes_in_global = 1
set completeopt+=longest
" restore last known cursor position
function! ResCur()
if line("'\"") <= line("$")
normal! g`"
return 1
endif
endfunction
" unfold at cursor position
if has("folding")
function! UnfoldCur()
if !&foldenable
return
endif
let cl = line(".")
if cl <= 1
return
endif
let cf = foldlevel(cl)
let uf = foldlevel(cl - 1)
let min = (cf > uf ? uf : cf)
if min
execute "normal!" min . "zo"
return 1
endif
endfunction
endif
" restore last known cursor position on open
augroup resCur
autocmd!
if has("folding")
autocmd BufWinEnter * if ResCur() | call UnfoldCur() | endif
else
autocmd BufWinEnter * call ResCur()
endif
augroup END
" restore session if Session.vim exists
function! RestoreSession()
if argc() == 0 && filereadable("Session.vim") "vim called without arguments
execute 'source Session.vim'
end
endfunction
autocmd VimEnter * call RestoreSession()
"matchit
source $VIMRUNTIME/macros/matchit.vim
"crontab -e
au! BufNewFile,BufRead crontab.* set nobackup | set nowritebackup
" vim: ft=vim