Created
April 9, 2014 19:38
-
-
Save Netherdrake/10306666 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" not a vi | |
set nocompatible | |
set encoding=utf-8 | |
" switch between YCM and NeoComplete | |
let neocomplete_mode = 1 | |
if has("mac") | |
let neocomplete_mode = 0 | |
endif | |
" start vundler | |
filetype off | |
set rtp+=~/.vim/bundle/vundle/ | |
call vundle#rc() | |
" core plugins | |
Bundle "gmarik/vundle" | |
Bundle "flazz/vim-colorschemes" | |
Bundle "kien/ctrlp.vim" | |
" vim main plugins | |
Bundle "sjl/gundo.vim" | |
Bundle "bling/vim-airline" | |
Bundle "jlanzarotta/bufexplorer" | |
Bundle "scrooloose/syntastic.git" | |
Bundle "vim-scripts/tComment" | |
Bundle "tpope/vim-surround" | |
Bundle "mileszs/ack.vim" | |
Bundle "rking/ag.vim" | |
Bundle "edsono/vim-matchit" | |
Bundle "tpope/vim-fugitive" | |
Bundle "henrik/vim-indexed-search" | |
Bundle "tpope/vim-abolish" | |
Bundle "tpope/vim-repeat" | |
Bundle "jiangmiao/auto-pairs" | |
Bundle "xolox/vim-session" | |
Bundle "xolox/vim-misc" | |
Bundle "editorconfig/editorconfig-vim" | |
Bundle "godlygeek/tabular" | |
Bundle "airblade/vim-gitgutter" | |
Bundle "Lokaltog/vim-easymotion" | |
Bundle "rhysd/clever-f.vim" | |
" togglable panels | |
Bundle "scrooloose/nerdtree" | |
Bundle "tpope/vim-vinegar" | |
Bundle "vim-scripts/taglist.vim" | |
Bundle "majutsushi/tagbar" | |
" language vundles | |
Bundle "pangloss/vim-javascript" | |
Bundle "marijnh/tern_for_vim" | |
Bundle "kchmck/vim-coffee-script" | |
Bundle "othree/javascript-libraries-syntax.vim" | |
Bundle "vim-ruby/vim-ruby" | |
Bundle "tpope/vim-rails" | |
Bundle "kana/vim-textobj-user" | |
Bundle "nelstrom/vim-textobj-rubyblock" | |
Bundle "fatih/vim-go" | |
Bundle "dart-lang/dart-vim-plugin" | |
" databases | |
Bundle "krisajenkins/dbext.vim" | |
Bundle "vim-scripts/SQLComplete.vim" | |
Bundle "vim-scripts/SQLUtilities" | |
Bundle "NagatoPain/AutoSQLUpperCase.vim" | |
" Bundle "vim-scripts/dbext.vim" | |
" experimental vundles | |
" Bundle "gorodinskiy/vim-coloresque.git" | |
" Bundle "maxbrunsfeld/vim-yankstack" | |
if neocomplete_mode == 1 | |
Bundle "Shougo/neocomplete" | |
Bundle "Shougo/neosnippet" | |
Bundle "honza/vim-snippets" | |
Bundle "Shougo/echodoc.vim" | |
else | |
Bundle "Valloric/YouCompleteMe" | |
Bundle "MarcWeber/vim-addon-mw-utils" | |
Bundle "tomtom/tlib_vim" | |
Bundle "garbas/vim-snipmate" | |
Bundle "honza/vim-snippets" | |
endif | |
" enable all the plugins | |
filetype plugin indent on | |
" general configs | |
set expandtab | |
set smarttab | |
set shiftwidth=2 | |
set softtabstop=2 | |
set tabstop=4 | |
set autoindent | |
set ruler | |
set hidden | |
set ignorecase | |
set smartcase | |
set showmatch | |
set incsearch | |
set hls | |
set relativenumber | |
set ls=2 | |
set cursorline | |
set nowrap | |
set backspace=indent,eol,start | |
set shell=/bin/bash | |
set completeopt -=preview | |
set textwidth=95 | |
set wildmenu | |
set ttyfast | |
set noshowmode | |
set cmdheight=1 | |
" set autoread | |
let mapleader="," | |
" realign buffers when iterm goes fullscreen | |
augroup FixProportionsOnResize | |
au! | |
au VimResized * exe "normal! \<c-w>=" | |
augroup END | |
" vim mode-switch lag fix | |
if ! has("gui_running") | |
set ttimeoutlen=10 | |
augroup FastEscape | |
autocmd! | |
au InsertEnter * set timeoutlen=0 | |
au InsertLeave * set timeoutlen=1000 | |
augroup END | |
endif | |
" macos vs linux clipboard | |
if has("mac") | |
set clipboard+=unnamed | |
else | |
set clipboard=unnamedplus | |
endif | |
" make C-a, C-x work properly | |
set nrformats= | |
" potential lag fix | |
let g:matchparen_insert_timeout=1 | |
" fix bufexplorer bug with hidden | |
let g:bufExplorerFindActive=0 | |
" show trailing whitespaces | |
set list | |
set listchars=tab:▸\ ,trail:¬,nbsp:.,extends:❯,precedes:❮ | |
augroup FileTypes | |
autocmd! | |
autocmd filetype html,xml set listchars-=tab:▸\ | |
augroup END | |
" syntax highlighting | |
syntax on | |
colorscheme candyman | |
" session management | |
let g:session_directory = "~/.vim/session" | |
let g:session_autoload = "no" | |
let g:session_autosave = "no" | |
let g:session_command_aliases = 1 | |
nnoremap <leader>so :OpenSession | |
nnoremap <leader>ss :SaveSession | |
nnoremap <leader>sd :DeleteSession<CR> | |
nnoremap <leader>sc :CloseSession<CR> | |
" backup/persistance settings | |
set undodir=~/.vim/tmp/undo// | |
set backupdir=~/.vim/tmp/backup// | |
set directory=~/.vim/tmp/swap// | |
set backupskip=/tmp/*,/private/tmp/*" | |
set backup | |
set writebackup | |
set noswapfile | |
" persist (g)undo tree between sessions | |
set undofile | |
set history=100 | |
set undolevels=100 | |
" Make sure Vim returns to the same line when you reopen a file. | |
augroup line_return | |
au! | |
au BufReadPost * | |
\ if line("'\"") > 0 && line("'\"") <= line("$") | | |
\ execute 'normal! g`"zvzz' | | |
\ endif | |
augroup END | |
" visual reselect of just pasted | |
nnoremap gp `[v`] | |
"make enter break and do newlines | |
nnoremap <CR> O<Esc>j | |
nnoremap <leader>j i<CR><Esc>== | |
"make space in normal mode add space | |
nnoremap <Space> i<Space><Esc>l | |
" consistent menu navigation | |
inoremap <C-j> <C-n> | |
inoremap <C-k> <C-p> | |
" intellij style autocomplete shortcut | |
inoremap <C-@> <C-x><C-o> | |
inoremap <C-Space> <C-x><C-o> | |
" togglables without FN keys | |
nnoremap <leader>1 :GundoToggle<CR> | |
set pastetoggle=<leader>2 | |
nnoremap <leader>3 :TlistToggle<CR> | |
nnoremap <leader>4 :TagbarToggle<CR> | |
nnoremap <leader>5 :NERDTreeToggle<CR> | |
" ctrlP config | |
let g:ctrlp_map = "<c-p>" | |
nnoremap <leader>t :CtrlPMRU<CR> | |
nnoremap <leader>bp :CtrlPBuffer<CR> | |
" clever-f prompt | |
let g:clever_f_show_prompt = 1 | |
let g:clever_f_across_no_line = 1 | |
" easy motion rebinded | |
nmap <leader>f <Plug>(easymotion-f2) | |
nmap <leader>F <Plug>(easymotion-F2) | |
" let g:EasyMotion_mapping_f = "<leader>f" | |
" let g:EasyMotion_mapping_F = "<leader>F" | |
" let g:EasyMotion_mapping_w = "<leader>w" | |
" let g:EasyMotion_mapping_b = "<leader>W" | |
" open vimrc | |
nnoremap <leader>v :e ~/.vimrc<CR> | |
nnoremap <leader>V :tabnew ~/.vimrc<CR> | |
" syntastic check | |
nnoremap <Leader>l :SyntasticCheck<CR> | |
" reload all open buffers | |
nnoremap <leader>ra :tabdo exec "windo e!" | |
"map next-previous jumps | |
nnoremap <leader>m <C-o> | |
nnoremap <leader>. <C-i> | |
" ms 4000 mappings | |
nnoremap <PageUp> { | |
nnoremap <PageDown> } | |
" Use sane regexes | |
nnoremap <leader>/ /\v | |
vnoremap <leader>/ /\v | |
" Use :Subvert search | |
nnoremap <leader>// :S / | |
vnoremap <leader>// :S / | |
" Use regular replace | |
nnoremap <leader>s :%s / | |
vnoremap <leader>s :%s / | |
" Use :Subvert replace | |
nnoremap <leader>S :%S / | |
vnoremap <leader>S :%S / | |
" Keep search matches in the middle of the window. | |
nnoremap n nzzzv | |
nnoremap N Nzzzv | |
" airline | |
if !exists("g:airline_symbols") | |
let g:airline_symbols = {} | |
endif | |
let g:airline_theme="powerlineish" | |
let g:airline_powerline_fonts=1 | |
" let g:airline_section_warning = airline#section#create([ "syntastic" ]) | |
let g:airline#extensions#branch#empty_message = "No SCM" | |
let g:airline#extensions#whitespace#enabled = 0 | |
let g:airline#extensions#syntastic#enabled = 1 | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number | |
let g:airline#extensions#tabline#fnamecollapse = 1 " /a/m/model.rb | |
let g:airline#extensions#hunks#non_zero_only = 1 " git gutter | |
" Visual Mode */# from Scrooloose | |
function! s:VSetSearch() | |
let temp = @@ | |
norm! gvy | |
let @/ = '\V' . substitute(escape(@@, '\'), '\n', '\\n', 'g') | |
let @@ = temp | |
endfunction | |
vnoremap * :<C-u>call <SID>VSetSearch()<CR>//<CR><c-o> | |
vnoremap # :<C-u>call <SID>VSetSearch()<CR>??<CR><c-o> | |
" Text Highlighter = <leader>hx | |
function! HiInterestingWord(n) | |
" Save our location. | |
normal! mz | |
" Yank the current word into the z register. | |
normal! "zyiw | |
" Calculate an arbitrary match ID. Hopefully nothing else is using it. | |
let mid = 86750 + a:n | |
" Clear existing matches, but don't worry if they don't exist. | |
silent! call matchdelete(mid) | |
" Construct a literal pattern that has to match at boundaries. | |
let pat = '\V\<' . escape(@z, '\') . '\>' | |
" Actually match the words. | |
call matchadd("InterestingWord" . a:n, pat, 1, mid) | |
" Move back to our original location. | |
normal! `z | |
endfunction | |
nnoremap <leader>hh :call clearmatches()<CR>:noh<CR> | |
nnoremap <silent> <leader>h1 :call HiInterestingWord(1)<cr> | |
nnoremap <silent> <leader>h2 :call HiInterestingWord(2)<cr> | |
nnoremap <silent> <leader>h3 :call HiInterestingWord(3)<cr> | |
nnoremap <silent> <leader>h4 :call HiInterestingWord(4)<cr> | |
nnoremap <silent> <leader>h5 :call HiInterestingWord(5)<cr> | |
nnoremap <silent> <leader>h6 :call HiInterestingWord(6)<cr> | |
hi def InterestingWord1 guifg=#000000 ctermfg=16 guibg=#ffa724 ctermbg=214 | |
hi def InterestingWord2 guifg=#000000 ctermfg=16 guibg=#aeee00 ctermbg=154 | |
hi def InterestingWord3 guifg=#000000 ctermfg=16 guibg=#8cffba ctermbg=121 | |
hi def InterestingWord4 guifg=#000000 ctermfg=16 guibg=#b88853 ctermbg=137 | |
hi def InterestingWord5 guifg=#000000 ctermfg=16 guibg=#ff9eb8 ctermbg=211 | |
hi def InterestingWord6 guifg=#000000 ctermfg=16 guibg=#ff2c4b ctermbg=195 | |
highlight search ctermfg=white ctermbg=3423513 | |
function! s:CopyMotionForType(type) | |
if a:type ==# "v" | |
silent execute "normal! `<" . a:type . "`>y" | |
elseif a:type ==# "char" | |
silent execute "normal! `[v`]y" | |
endif | |
endfunction | |
function! s:AckMotion(type) abort | |
let reg_save = @@ | |
call s:CopyMotionForType(a:type) | |
execute "normal! :Ack! --literal " . shellescape(@@) . "\<cr>" | |
let @@ = reg_save | |
endfunction | |
if executable("ag") | |
let g:ackprg = "ag --nogroup --column" | |
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' | |
endif | |
" git and ack stuff | |
let g:gitgutter_enabled = 1 | |
let g:gitgutter_realtime = 0 | |
let g:gitgutter_eager = 0 | |
nnoremap <leader>G mG:Git! | |
nnoremap <leader>g :Git | |
nnoremap <leader>A :!ag | |
nnoremap <leader>a :Ag! | |
" reload ctags | |
nnoremap <leader>C :!ctags -R --exclude=.git --exclude=log --exclude=tmp *<CR><CR> | |
" ctag ruby gems | |
set tags+=gems.tags | |
" Golang settings | |
" let g:go_fmt_command = "gofmt -tabs=false -tabwidth=4" | |
let g:go_fmt_options = "-tabs=false -tabwidth=4" | |
" Golang shortcuts | |
nnoremap <leader>Gr :!go run %<cr> | |
nnoremap <leader>GR :!go run -race %<cr> | |
nnoremap <leader>Gt :!go test -v -cover<cr> | |
nnoremap <leader>GT :!go test -race -v -cover<cr> | |
nnoremap <leader>Gb :!go build<cr> | |
nnoremap <leader>GB :!go build -race<cr> | |
nnoremap <leader>Gi :!go install<cr> | |
" Ruby shortcuts | |
nnoremap <Leader>Rr :!ruby %<CR> | |
nnoremap <Leader>Rf :!zeus rspec %<CR> | |
nnoremap <Leader>Rt :!rspec<CR> | |
" Dart shortcuts | |
nnoremap <leader>Dr :!dart %<cr> | |
if neocomplete_mode == 1 | |
" " NEOCOMPLETE (experimental) | |
" Disable AutoComplPop. | |
let g:acp_enableAtStartup = 0 | |
let g:neocomplete#data_directory = "~/.vim/tmp/swap" | |
" Use neocomplete. | |
let g:neocomplete#enable_at_startup = 1 | |
" Use smartcase. | |
let g:neocomplete#enable_smart_case = 1 | |
" Set minimum syntax keyword length. | |
let g:neocomplete#sources#syntax#min_keyword_length = 2 | |
let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' | |
" Define dictionary. | |
let g:neocomplete#sources#dictionary#dictionaries = { | |
\ 'default' : '', | |
\ 'vimshell' : $HOME.'/.vimshell_hist', | |
\ 'scheme' : $HOME.'/.gosh_completions' | |
\ } | |
" Define keyword. | |
if !exists('g:neocomplete#keyword_patterns') | |
let g:neocomplete#keyword_patterns = {} | |
endif | |
let g:neocomplete#keyword_patterns['default'] = '\h\w*' | |
" " snipmate rebind | |
" imap <C-l> <esc>a<Plug>snipMateNextOrTrigger | |
" smap <C-l> <Plug>snipMateNextOrTrigger | |
" Plugin key-mappings. | |
inoremap <expr><C-g> neocomplete#undo_completion() | |
inoremap <expr><C-l> neocomplete#complete_common_string() | |
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" | |
inoremap <expr><C-y> neocomplete#close_popup() | |
inoremap <expr><C-u> neocomplete#close_popup() . "\<C-u>" | |
inoremap <expr><C-h> neocomplete#smart_close_popup() . "\<C-w>" | |
" Plugin key-mappings. | |
imap <C-i> <Plug>(neosnippet_expand_or_jump) | |
smap <C-i> <Plug>(neosnippet_expand_or_jump) | |
xmap <C-i> <Plug>(neosnippet_expand_target) | |
" <CR>: close popup and save indent. | |
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> | |
function! s:my_cr_function() | |
return pumvisible() ? neocomplete#close_popup() : "\<CR>" | |
endfunction | |
" Enable heavy omni completion. | |
if !exists('g:neocomplete#sources#omni#input_patterns') | |
let g:neocomplete#sources#omni#input_patterns = {} | |
endif | |
" neosnippet | |
" For snippet_complete marker. | |
if has('conceal') | |
set conceallevel=2 concealcursor=i | |
endif | |
" Enable snipMate compatibility feature. | |
let g:neosnippet#enable_snipmate_compatibility = 1 | |
" Tell Neosnippet about the other snippets | |
let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets' | |
" ruby au's | |
augroup RubyCompletion | |
au! | |
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 | |
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1 | |
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1 | |
autocmd FileType eruby set filetype=html.eruby | |
augroup END | |
else | |
" YouCompleteMe | |
let g:ycm_filetype_blacklist = {} | |
let g:ycm_key_list_select_completion = [] | |
let g:ycm_key_list_previous_completion = [] | |
let g:ycm_key_invoke_completion = "<C-j>" | |
let g:ycm_collect_identifiers_from_tags_files = 1 | |
endif | |
" linked databases | |
" let g:dbext_default_profile='vincere' | |
" let g:dbext_default_profile_vincere = 'type=PGSQL:user=vincere:passwd=:dbname=vincere_development' | |
" angularjs syntasic ovveride | |
let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"] | |
let g:syntastic_mode_map={ 'mode': 'active', | |
\ 'active_filetypes': [], | |
\ 'passive_filetypes': ['html'] } | |
" enable neocomplete Golang helper | |
let g:echodoc_enable_at_startup = 1 | |
" enable angular syntax | |
let g:used_javascript_libs = 'jquery,angularjs' | |
" retab | |
fu! Retab() | |
:retab | |
:%s/\s\+$// | |
endfunction | |
" THINGS TODO ON NEW INSTALL | |
" git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle | |
" | |
" Inside of ~/.vim make /tmp, inside of which mkdir swap backup undo | |
" | |
" install ctags, ack, ag | |
" sudo packer -S silver-searcher-git ack ctags | |
" | |
" https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard | |
" | |
" cd ~/.vim/bundle/YouCompleteMe | |
" ./install.sh --clang-completer | |
" | |
" cd .vim/bundle/tern_for_vim/ && npm install | |
" npm install -g jshint |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment