" 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 set nocompatible " TODO: this may not be in the correct place. It is intended to allow overriding . " source ~/.vimrc.before if it exists. if filereadable(expand("~/.vimrc.before")) source ~/.vimrc.before endif " ================ General Config ==================== 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 set visualbell "No sounds set autoread "Reload files changed outside vim set so=999 " Make sure that coursor is always vertically centered on j/k moves 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 " 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 " 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 =============== " 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 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 " ================ Text, Tab, Indentation ====================== set autoindent set smartindent set smarttab set shiftwidth=2 set softtabstop=2 set tabstop=2 set expandtab set ai "Auto indent set si "Smart indent " Auto indent pasted text nnoremap p p=`] nnoremap P P=`] filetype plugin on filetype indent on " Display tabs and trailing spaces visually set list listchars=tab:\ \ ,trail:ยท " set listchars=tab:>- set nowrap "Don't wrap lines set linebreak "Wrap lines at convenient points " ================ Folds ============================ 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 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* set wildignore+=*sass-cache* set wildignore+=*DS_Store* set wildignore+=vendor/rails/** set wildignore+=vendor/cache/** set wildignore+=*.gem set wildignore+=log/** set wildignore+=tmp/** set wildignore+=*.png,*.jpg,*.gif " " ================ Scrolling ======================== set scrolloff=8 "Start scrolling when we're 8 lines away from margins set sidescrolloff=15 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 set infercase " Allow smarter completion by infering the case " ================ Custom Settings ======================== so ~/.yadr/vim/settings.vim " 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 *.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