Skip to content

Instantly share code, notes, and snippets.

@localshred
Created September 25, 2012 17:23
Show Gist options
  • Select an option

  • Save localshred/3783277 to your computer and use it in GitHub Desktop.

Select an option

Save localshred/3783277 to your computer and use it in GitHub Desktop.

Revisions

  1. localshred created this gist Sep 25, 2012.
    289 changes: 289 additions & 0 deletions .vimrc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,289 @@
    "-------------------------------------------------------------------[Vundle]----
    set nocompatible
    filetype off
    set rtp+=~/.vim/bundle/vundle/
    call vundle#rc()

    Bundle 'gmarik/vundle'

    Bundle 'kien/ctrlp.vim'
    Bundle 'mileszs/ack.vim'
    Bundle 'danchoi/ruby_bashrockets.vim'
    Bundle 'duff/vim-bufonly'
    Bundle 'ervandew/supertab'
    Bundle 'jdevera/vim-protobuf-syntax'
    Bundle 'leshill/vim-json'
    Bundle 'Lokaltog/vim-powerline'
    Bundle 'majutsushi/tagbar'
    Bundle 'msanders/snipmate.vim'
    Bundle 'Rykka/ColorV'
    Bundle 'scrooloose/nerdcommenter'
    Bundle 'scrooloose/nerdtree'
    Bundle 'scrooloose/snipmate-snippets'
    Bundle 'scrooloose/syntastic'
    Bundle 'vim-ruby/vim-ruby'
    Bundle 'vim-scripts/yaml.vim'
    Bundle 'jamestomasino/actionscript-vim-bundle'
    Bundle 'cespare/mxml.vim'
    Bundle 'cespare/dtd.vim'
    Bundle 'tpope/vim-fugitive'
    Bundle 'tpope/vim-git'
    Bundle 'tpope/vim-haml'
    Bundle 'tpope/vim-markdown'
    Bundle 'tpope/vim-rails'
    Bundle 'tpope/vim-rake'
    Bundle 'tpope/vim-bundler'
    Bundle 'tpope/vim-repeat'
    Bundle 'tpope/vim-surround'
    Bundle 'tpope/vim-unimpaired'
    Bundle 'vim-scripts/Align'
    Bundle 'bronson/vim-trailing-whitespace'
    Bundle 'vim-scripts/Io-programming-language-syntax'
    Bundle 'edsono/vim-matchit'
    Bundle 'kana/vim-textobj-user'
    Bundle 'nelstrom/vim-textobj-rubyblock'
    Bundle 'vim-scripts/vim-scala'
    Bundle 'vim-scripts/scala.vim'

    "colorschemes
    Bundle 'altercation/vim-colors-solarized'
    Bundle 'tomasr/molokai'

    filetype plugin indent on

    "------------------------------------------------------------------[General]----
    set secure "locks down the exrc setting
    set exrc "enable cwd .vimrc files

    set nocompatible
    set encoding=utf8

    syntax on

    set nowrap
    set nofoldenable

    set backspace=indent,eol,start
    set tabstop=2
    set softtabstop=2
    set shiftwidth=2
    set expandtab
    set autoindent
    set cinoptions=(s,m1,)200,j1,J1

    set vb
    set t_vb=""

    set backup
    set swapfile
    set backupdir=/tmp
    set directory=/tmp

    set lazyredraw

    set complete=.,w,k,b,u,t,i
    set completeopt=menu

    let mapleader=","

    "-------------------------------------------------------------------[Layout]----
    set number
    set laststatus=2
    "set ruler
    set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
    set listchars=tab:▶━,trail:⌴,extends:▶,precedes:

    set splitbelow
    set splitright

    colorscheme molokai

    syn on

    silent! set colorcolumn=80

    function! SyntaxItem()
    return synIDattr(synID(line("."),col("."),1),"name")
    endfunction

    "--------------------------------------------------------------[Plugins]----
    "let g:Powerline_symbols='fancy'
    let g:SuperTabSetDefaultCompletionType="context"
    let g:syntastic_javascript_checker="jshint"
    let g:fugitive_github_domains = ['git.iamawesome.com']
    let g:Powerline_dividers_override = ['', '', '', '']
    call Pl#Theme#RemoveSegment('fileformat')
    call Pl#Theme#RemoveSegment('fileencoding')

    silent! sign define SyntasticError text=!>
    silent! sign define SyntasticWarning text=W>

    " Tagbar mappings
    nnoremap <leader>tb :TagbarToggle<cr>
    " NERDTree mappings
    nnoremap <leader>ntt :NERDTreeToggle<cr>
    nnoremap <leader>ntf :NERDTreeFind<cr>
    " Ack.vim mappings
    nnoremap <leader>fi :Ack --ruby
    nnoremap <leader>f/ :AckFromSearch --ruby<cr>
    nnoremap <leader>fq :cclose<cr>
    nnoremap <leader>fo :copen<cr>
    " Whitespace mappings
    nnoremap <leader>fw :FixWhitespace<cr>
    "---------------------------------------------------------------[Search]----
    set hlsearch
    set incsearch
    set smartcase
    set ignorecase

    "-----------------------------------------------------------[Navigation]----
    "set mouse=a
    set hidden
    set scrolloff=5
    set scrolljump=5
    set sidescrolloff=10
    set sidescroll=1
    set wildmenu
    set showmatch
    set matchtime=2
    set cursorline
    set cursorcolumn

    "------------------------------------------------------[Custom Mappings]----
    nnoremap <silent> <Tab> :wincmd w<cr>
    nnoremap <silent> <S-Tab> :wincmd W<cr>
    " Map esc key in insert mode to jk
    "inoremap jk <esc>
    "vnoremap jk <esc>
    "inoremap <esc> <nop>
    "vnoremap <esc> <nop>

    " Disable arrow keys
    map <up> <nop>
    map <down> <nop>
    map <left> <nop>
    map <right> <nop>
    imap <up> <nop>
    imap <down> <nop>
    imap <left> <nop>
    imap <right> <nop>
    " Move around splits with <c-hjkl>
    nnoremap <c-j> <c-w>j
    nnoremap <c-k> <c-w>k
    nnoremap <c-h> <c-w>h
    nnoremap <c-l> <c-w>l
    " Move line up (keep cursor with line)
    noremap <leader>k ddkP
    " Move line down (keep cursor with line)
    noremap <leader>j ddp
    " Insert mode delete line
    inoremap <c-d> <esc>ddi
    " Insert mode uppercase word
    inoremap <c-u> <esc>viwUi
    " Beginning of line
    noremap H ^
    " End of line
    noremap L $
    " Insert line below
    noremap <leader>o o<esc>k
    " Insert line above
    noremap <leader>O O<esc>j
    " Insert line at top of file
    noremap gO ggO
    " Insert line at bottom of file
    noremap go Go
    " Go to file under cursor
    noremap gf :e <cfile><cr>
    " Unhighlight search
    nnoremap <leader>/ :nohls<cr>
    " Edit .vimrc in new vsplit
    nnoremap <leader>ev :vsplit $MYVIMRC<cr>
    " Source .vimrc
    nnoremap <leader>sv :source $MYVIMRC<cr>
    " Symbolize word
    nnoremap <leader>: viw<esc>bi:<esc>
    " Wrap parens around def method args
    nnoremap <leader>() ^welr(A)<esc>
    " Reformat line
    nnoremap <leader>l= V=
    " Reformat paragraph
    nnoremap <leader>p= vip=
    function! PromoteToLet()
    :normal! dd
    " :exec '?^\s*it\>'
    :normal! P
    :.s/\(\w\+\) = \(.*\)$/let(:\1) { \2 }/
    :normal ==
    endfunction
    :command! PromoteToLet :call PromoteToLet()
    :map <leader>p :PromoteToLet<cr>
    " Expand hashrocket
    iabbrev hh =>

    "---------------------------------------------------------------[Keymap]----
    "set keymap=jocafa

    "---------------------------------------------------------------------------
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[File Types]%%%%
    "---------------------------------------------------------------------------

    "-----------------------------------------------------------------[HTML]----
    autocmd BufNewFile,BufRead *.htm,*.html set filetype=html.css.javascript

    "------------------------------------------------------------------[CSS]----
    autocmd BufNewFile,BufRead *.css,*.less set filetype=css


    "-----------------------------------------------------------------[HAML]----
    autocmd BufNewFile,BufRead *.haml set filetype=haml
    autocmd FileType haml set makeprg=haml\ %:p\ %:p:s?haml?html?

    "-----------------------------------------------------------------[Ruby]----
    autocmd BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec,[rR]akefile,Thorfile,Capfile,*.jbuilder,*.rake,*.thor set filetype=ruby
    autocmd Filetype,BufNewFile *_spec.rb nmap <Leader>r :!bundle exec rspec %<CR>
    autocmd Filetype,BufNewFile *_spec.rb nmap <Leader>R :exe "!bundle exec rspec %\:" . line(".")<cr>

    "---------------------------------------------------------------[Python]----
    autocmd FileType python let python_highlight_space_errors=1
    autocmd FileType python let python_highlight_all=1
    autocmd FileType python set omnifunc=pythoncomplete#Complete

    "-------------------------------------------------------------[Markdown]----
    autocmd BufNewFile,BufRead *.md,*.mkd,*.markdown set filetype=markdown
    autocmd FileType markdown set wrap linebreak

    "---------------------------------------------------------[ Processing ]----
    autocmd BufNewFile,BufRead *.pde set filetype=java

    "-----------------------------------------------------------[ Protobuf ]----
    autocmd BufNewFile,BufRead *.proto set filetype=proto

    "---------------------------------------------------------------[ YAML ]----
    autocmd BufNewFile,BufRead *.yml*,*.yaml*,.trebrc so ~/.vim/bundle/yaml.vim/colors/yaml.vim

    "-------------------------------------------------------[ ActionScript ]----
    autocmd BufNewFile,BufRead *.as set filetype=io

    "---------------------------------------------------------------[ MXML ]----
    autocmd BufNewFile,BufRead *.mxml set filetype=mxml

    "-----------------------------------------------------------------[ Scala ]----
    autocmd BufNewFile,BufRead *.scala set filetype=scala
    au! Syntax scala source ~/.vim/bundle/scala.vim/syntax/scala.vim

    "-----------------------------------------------------------------[ Io ]----
    autocmd BufNewFile,BufRead *.io set filetype=io