dotar/vimrc

160 lines
4.8 KiB
VimL
Raw Normal View History

" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
scriptencoding utf-8
set encoding=utf-8
2011-11-18 05:45:33 +08:00
set nocompatible
" TODO: this may not be in the correct place. It is intended to allow overriding <Leader>.
" source ~/.vimrc.before if it exists.
if filereadable(expand("~/.vimrc.before"))
source ~/.vimrc.before
endif
" ================ General Config ====================
2011-11-18 05:45:33 +08:00
2017-08-01 23:57:44 +08:00
set foldcolumn=0 " Make sure that extra margin on left is removed
set number "Line numbers are good
set history=1000 "Store lots of :cmdline history
set showmode "Show current mode down the bottom
set gcr=a:blinkon0 "Disable cursor blink
2012-03-13 11:13:11 +08:00
set visualbell "No sounds
set autoread "Reload files changed outside vim
2017-08-01 22:49:41 +08:00
set so=999 " Make sure that coursor is always vertically centered on j/k moves
2017-08-01 23:57:44 +08:00
set magic
set lazyredraw " Don't redraw while executing macros (good performance config)
set showcmd " Show (partial) commands (or size of selection in Visual mode) in the status line
" Configure backspace so it acts as it should act
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
" No annoying sound on errors
set noerrorbells
set novisualbell
set t_vb=
set tm=500
2011-11-18 05:45:33 +08:00
" This makes vim act like all other editors, buffers can
" exist in the background without being in a window.
" http://items.sjbach.com/319/configuring-vim-right
set hidden
"turn on syntax highlighting
syntax on
2011-11-18 05:45:33 +08:00
" Change leader to a comma because the backslash is too far away
" That means all \x commands turn into ,x
" The mapleader has to be set before vundle starts loading all
" the plugins.
let mapleader=","
" =============== Vundle Initialization ===============
2014-08-20 01:26:29 +08:00
" This loads all the plugins specified in ~/.vim/vundles.vim
" Use Vundle plugin to manage all other plugins
if filereadable(expand("~/.vim/vundles.vim"))
source ~/.vim/vundles.vim
endif
au BufNewFile,BufRead *.vundle set filetype=vim
" ================ Turn Off Swap Files ==============
set noswapfile
2011-11-18 05:45:33 +08:00
set nobackup
set nowb
" ================ Persistent Undo ==================
" Keep undo history across sessions, by storing in file.
" Only works all the time.
if has('persistent_undo') && !isdirectory(expand('~').'/.vim/backups')
silent !mkdir ~/.vim/backups > /dev/null 2>&1
set undodir=~/.vim/backups
set undofile
endif
2011-11-18 05:45:33 +08:00
2017-08-01 23:57:44 +08:00
" ================ Text, Tab, Indentation ======================
2011-11-18 05:45:33 +08:00
set autoindent
set smartindent
set smarttab
2011-11-18 05:45:33 +08:00
set shiftwidth=2
set softtabstop=2
set tabstop=2
set expandtab
2017-08-01 23:57:44 +08:00
set ai "Auto indent
set si "Smart indent
" Auto indent pasted text
nnoremap p p=`]<C-o>
nnoremap P P=`]<C-o>
filetype plugin on
filetype indent on
" Display tabs and trailing spaces visually
set list listchars=tab:\ \ ,trail
2017-03-10 17:14:30 +08:00
" set listchars=tab:>-
set nowrap "Don't wrap lines
set linebreak "Wrap lines at convenient points
" ================ Folds ============================
2011-11-18 05:45:33 +08:00
set foldmethod=indent "fold based on indent
set foldnestmax=3 "deepest fold is 3 levels
set nofoldenable "dont fold by default
" ================ Completion =======================
set wildmode=list:longest
2011-11-18 05:45:33 +08:00
set wildmenu "enable ctrl-n and ctrl-p to scroll thru matches
set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
set wildignore+=*vim/backups*
2012-03-10 05:35:30 +08:00
set wildignore+=*sass-cache*
set wildignore+=*DS_Store*
set wildignore+=vendor/rails/**
set wildignore+=vendor/cache/**
2012-03-10 05:35:30 +08:00
set wildignore+=*.gem
set wildignore+=log/**
set wildignore+=tmp/**
2012-03-13 01:03:02 +08:00
set wildignore+=*.png,*.jpg,*.gif
2012-01-25 02:06:34 +08:00
"
" ================ Scrolling ========================
2011-11-18 05:45:33 +08:00
set scrolloff=8 "Start scrolling when we're 8 lines away from margins
set sidescrolloff=15
2011-11-18 05:45:33 +08:00
set sidescroll=1
" ================ Search ===========================
set incsearch " Find the next match as we type the search
set hlsearch " Highlight searches by default
set ignorecase " Ignore case when searching...
set smartcase " ...unless we type a capital
2017-08-01 23:57:44 +08:00
set infercase " Allow smarter completion by infering the case
2017-03-10 17:14:30 +08:00
" ================ Python ===========================
2017-05-12 18:27:04 +08:00
autocmd FileType python set colorcolumn=160
2017-03-10 17:14:30 +08:00
" ================ Custom Settings ========================
so ~/.yadr/vim/settings.vim
2017-08-01 23:57:44 +08:00
" Delete trailing white space on save, useful for Python and CoffeeScript ;)
func! DeleteTrailingWS()
exe "normal mz"
%s/\s\+$//ge
exe "normal `z"
endfunc
autocmd BufWrite *.go :call DeleteTrailingWS()
autocmd BufWrite *.py :call DeleteTrailingWS()
autocmd BufWrite *.coffee :call DeleteTrailingWS()
" Use Unix as the standard file type
set ffs=unix,dos,mac
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse=a
endif