1
0
Fork 0
dotfiles/vim/vimrc

327 lines
7.8 KiB
VimL
Raw Normal View History

2013-05-21 06:57:41 +00:00
set nocompatible " vi improved
filetype off " do not load Filetype file
2013-06-23 09:06:21 +00:00
set shell=/bin/bash
2013-05-21 06:57:41 +00:00
2013-07-20 06:11:49 +00:00
2013-05-21 06:57:41 +00:00
" ####################
" ### Vundle setup ###
" ####################
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
2013-07-20 06:11:49 +00:00
2013-05-21 06:57:41 +00:00
" ##############
" ### Colors ###
" ##############
2013-06-23 09:06:21 +00:00
Bundle "daylerees/colour-schemes", { "rtp": "vim-themes/" }
Bundle "chriskempson/tomorrow-theme", { "rtp": "vim/" }
2013-07-20 06:11:49 +00:00
" Bundle "altercation/solarized", { "rtp": "vim-colors-solarized/" }
Bundle "thinkpixellab/flatland", { "rtp": "Vim/" }
Bundle "sjl/badwolf"
Bundle "tomasr/molokai"
Bundle "nanotech/jellybeans.vim"
Bundle "chriskempson/base16-vim"
2013-06-23 09:06:21 +00:00
syntax on
2013-06-23 09:06:21 +00:00
filetype plugin on
filetype indent on
2013-07-20 06:11:49 +00:00
function! SetRandomColorScheme()
let schemes ='peacock grunge freshcut molokai badwolf flatland jellybeans Tomorrow-Night Tomorrow-Night-Eighties '
let schemes.='base16-eighties '
let seconds=str2nr(strftime('%S'))
let scheme=split(schemes)[seconds%10]
set background=dark
execute 'colorscheme '.scheme
redraw
echo 'Color scheme is now set to "'.scheme.'"'
endfunction
" call SetRandomColorScheme()
colorscheme peacock
nmap <Leader>cs :call SetRandomColorScheme()<CR>
2013-05-21 06:57:41 +00:00
" #################
" ### Powerline ###
" #################
Bundle 'Lokaltog/vim-powerline'
2013-06-23 09:06:21 +00:00
let g:Powerline_symbols = 'compatible' " (compatible, unicode, fancy)
2013-05-21 06:57:41 +00:00
set laststatus=2
2013-06-23 09:06:21 +00:00
set noshowmode
2013-05-21 06:57:41 +00:00
2013-07-20 06:11:49 +00:00
2013-06-23 09:06:21 +00:00
" #################
" ### Nerd Tree ###
" #################
2013-05-21 06:57:41 +00:00
Bundle 'scrooloose/nerdtree'
2013-07-20 06:11:49 +00:00
nmap <silent> <C-n> :NERDTreeToggle<CR>
let NERDTreeIgnore=['\.DS_Store$', '\.swp$', '\.git$', '\.bundle$', '\.pyc$', '\.sass-cache']
2013-06-23 09:06:21 +00:00
let NERDTreeHighlightCursorline=1
let NERDTreeShowHidden=1
let NERDTreeMinimalUI=1
let NERDTreeDirArrows=1
let NERDChristmasTree=1
let NERDTreeChDirMode=2
let NERDTreeQuitOnOpen=1
2013-07-20 06:11:49 +00:00
let g:NERDTreeWinSize=40
2013-06-23 09:06:21 +00:00
" ######################
" ### Nerd Commenter ###
" ######################
Bundle 'scrooloose/nerdcommenter'
let g:NERDCreateDefaultMappings=0
let g:NERDCompactSexyComs=1
let g:NERDSpaceDelims=1
2013-07-20 06:11:49 +00:00
nmap <silent> <Leader>/ <plug>NERDCommenterToggle
vmap <silent> <Leader>/ <plug>NERDCommenterToggle
2013-05-21 06:57:41 +00:00
2013-06-23 09:06:21 +00:00
" #########################
" ### Fuzzy File Search ###
" #########################
2013-05-21 06:57:41 +00:00
Bundle 'kien/ctrlp.vim'
2013-07-20 06:11:49 +00:00
let g:ctrlp_match_window_bottom=1
let g:ctrlp_match_window_reversed=1
2013-06-23 09:06:21 +00:00
2013-07-20 06:11:49 +00:00
" ######################
" ### Syntax Support ###
" ######################
2013-05-21 06:57:41 +00:00
Bundle 'vim-ruby/vim-ruby'
2013-07-20 06:11:49 +00:00
Bundle 'tpope/vim-markdown'
" Sugar
Bundle 'wavded/vim-stylus'
Bundle 'kchmck/vim-coffee-script'
Bundle 'slim-template/vim-slim'
2013-06-23 09:06:21 +00:00
" ###################
" ### Rails Tools ###
" ###################
2013-05-21 06:57:41 +00:00
Bundle 'tpope/vim-rails'
2013-07-20 06:11:49 +00:00
" Usage
" :Rmodel, :Rcontroller, :Rspec
2013-05-21 06:57:41 +00:00
2013-06-23 09:06:21 +00:00
" ###########################
" ### Magic Code Aligning ###
" ###########################
Bundle 'godlygeek/tabular'
2013-07-20 06:11:49 +00:00
" Usage
" :Tabularize /=
nmap <silent> <Leader>t :Tabularize /
2013-06-23 09:06:21 +00:00
" ###################
" ### Git Wrapper ###
" ###################
Bundle 'tpope/vim-fugitive'
2013-07-20 06:11:49 +00:00
" Usage
" :Gblame, :Gdiff, :Gcommit etc.
" ###########################
" ### The Silver Searcher ###
" ###########################
Bundle 'rking/ag.vim'
2013-06-23 09:06:21 +00:00
" ###################
" ### Preferences ###
" ###################
set encoding=utf-8 " Because
set showmatch " Show matching brackets
set backspace=indent,eol,start " Better backspace support
set history=1000 " Save 1000 commands in history
set undolevels=1000 " Save 1000 commands for undo
set completeopt=longest,menuone " Completion preferences
set complete=.,w,b,kspell,ss " current buffer, other windows' buffers, dictionary, spelling
set relativenumber " Show line numbers (relative)
set cursorline " Highlight the current line
set tabstop=2 " Tab size
set shiftwidth=2 " Must be the same
set softtabstop=2 " Must be the same
set expandtab " Upaces instead of tabs
set nowrap " Wrap lines
set nolinebreak " Break lines softly
set wrapscan " Wrap search
set incsearch " Incremental search
set ignorecase " Ignore case when searching
set nohlsearch " Don't fucking highlight search
set smartcase " Overrides ignore case in case pattern contains upper case char
set nolist " Don't show sick characters
set textwidth=120 " Text width before wrap
set t_Co=256 " Number of terminal colors
set mousehide " Hide mouse when typing
set guioptions-=L " Disable scrollbars
set guioptions-=r " Disable scrollbars
set wildignore+=*/tmp/* " Index ignoresa
2013-07-20 06:11:49 +00:00
set gfn=Inconsolata:h18 " Set font family and size
set hidden " Allow switching unsaved buffers
" Sexy highlighting colors
highlight Search cterm=none ctermbg=198 ctermfg=7
2013-06-23 09:06:21 +00:00
" ########################
" ### MacVim Specific ###
" ########################
if has("gui_macvim")
" Use Mac option key as meta key
set macmeta
2013-07-20 06:11:49 +00:00
2013-06-23 09:06:21 +00:00
" MacVIM shift+arrow-keys behavior (required in .vimrc)
let macvim_hig_shift_movement=1
endif
2013-07-20 06:11:49 +00:00
2013-06-23 09:06:21 +00:00
" ################
" ### Triggers ###
" ################
if has("autocmd")
autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et
autocmd FileType ruby,eruby,yaml setlocal foldmethod=manual
autocmd User Rails set tabstop=2 shiftwidth=2 softtabstop=2 expandtab
" When vimrc is edited, reload it
autocmd! BufWritePost $MYVIMRC source $MYVIMRC
2013-07-20 06:11:49 +00:00
" Cleanup trailing whitespaces before save
autocmd BufWritePre * :call PreservePosition('%s/\s\+$//e')
" Line number (relative/absolute) magic
2013-06-23 09:06:21 +00:00
autocmd FocusLost * :set number
autocmd FocusGained * :set relativenumber
autocmd InsertEnter * :set number
autocmd InsertLeave * :set relativenumber
2013-07-20 06:11:49 +00:00
autocmd BufNewFile,BufRead *.styl set syntax=stylus
autocmd BufNewFile,BufRead *.slim set syntax=slim
autocmd BufNewFile,BufRead *.coffee set syntax=coffee
autocmd BufNewFile,BufRead *.md set syntax=markdown
2013-06-23 09:06:21 +00:00
endif
2013-05-21 06:57:41 +00:00
2013-07-20 06:11:49 +00:00
2013-05-21 06:57:41 +00:00
" ##########################
" ### Follow Your Leader ###
" ##########################
2013-06-23 09:06:21 +00:00
" Set the Leader key to comma instead of backslash
2013-05-21 06:57:41 +00:00
let mapleader = ","
2013-06-23 09:06:21 +00:00
nmap <Leader>v :e $MYVIMRC<CR>
nmap <Leader>s :w<CR>
2013-07-20 06:11:49 +00:00
nmap <Leader>x :q!<CR>
2013-06-23 09:06:21 +00:00
nmap <Leader>rr :source $MYVIMRC<CR>
2013-07-20 06:11:49 +00:00
" Search for the word under cursor
nmap <Leader>d /<C-r><C-w><CR>zz
2013-06-23 09:06:21 +00:00
" Toggle search highlight
nmap <Leader>h :set hlsearch!<CR>
nmap <Leader>hh :let @/=""<CR>
nmap <Leader>o :set paste!<CR>
" Toggle wrap
nmap <Leader>w :set wrap! list! linebreak!<CR>
" Rails helpers
2013-07-20 06:11:49 +00:00
nmap <Leader>rm :Rmodel
nmap <Leader>rc :Rcontroller
nmap <Leader>rs :Rspec
2013-06-23 09:06:21 +00:00
" Center line with the find occurance
nmap n nzz
nmap N Nzz
" Siblings
nmap <Leader>ew :e <C-R>=expand("%:p:h")."/"<CR>
nmap <Leader>es :sp <C-R>=expand("%:p:h")."/"<CR>
nmap <Leader>ev :vsp <C-R>=expand("%:p:h")."/"<CR>
nmap <Leader>et :tabedit <C-R>=expand("%:p:h")."/"<CR>
" Convert Ruby 1.8 hash syntax to 1.9
2013-07-20 06:11:49 +00:00
nmap <Leader>r18 :%s/:\(\w\+\)\(\s\+\)=>\s\+/\1:\2/ge<CR>
" Buffers
nmap <Leader>b :ls<CR>:b
2013-06-23 09:06:21 +00:00
" #######################
" ### Visual Mappings ###
" #######################
" Indentation TextMate style
2013-07-20 06:11:49 +00:00
vmap <M-[> <gv
vmap <M-]> >gv
2013-06-23 09:06:21 +00:00
" Sudo to write
cmap w!! w !sudo tee % >/dev/null
" Move 10 lines with Option key
nmap <Esc>j 10j
nmap <Esc>k 10k
" Insert blank lines without entering insert mode
nnoremap <Leader>j m`o<Esc>``
nnoremap <Leader>k m`O<Esc>``
function! ToggleLineNumbers()
if (&relativenumber == 1)
set number
else
set relativenumber
endif
endfunc
2013-05-21 06:57:41 +00:00
2013-06-23 09:06:21 +00:00
function! PreservePosition(command)
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
2013-05-21 06:57:41 +00:00
2013-06-23 09:06:21 +00:00
" Do the business:
execute a:command
2013-05-21 06:57:41 +00:00
2013-06-23 09:06:21 +00:00
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
2013-06-23 09:06:21 +00:00
nnoremap <silent> <Leader>n :call ToggleLineNumbers()<CR>