aboutsummaryrefslogtreecommitdiffstats
path: root/.vim
diff options
context:
space:
mode:
authorDavid Runge <david.runge@frqrec.com>2014-10-31 18:12:14 +0100
committerDavid Runge <david.runge@frqrec.com>2014-10-31 18:12:14 +0100
commitbb21c0b6b5a89eff0722641123982d34a2b6f395 (patch)
tree5060ede28e03963e3d1eac3f0063ff8686cc4089 /.vim
parentd33721a35f7f61b89acaacc3e53368ae8d99d750 (diff)
downloaddotfiles-bb21c0b6b5a89eff0722641123982d34a2b6f395.tar.gz
dotfiles-bb21c0b6b5a89eff0722641123982d34a2b6f395.tar.bz2
dotfiles-bb21c0b6b5a89eff0722641123982d34a2b6f395.tar.xz
dotfiles-bb21c0b6b5a89eff0722641123982d34a2b6f395.zip
vim: Switching from yadr to VAM. Includes all modifications for vimrc, the loading of plugins and their customization.
Diffstat (limited to '.vim')
-rw-r--r--.vim/addons-settings.vim181
-rw-r--r--.vim/addons.vim56
-rw-r--r--.vim/custom-functions.vim37
-rw-r--r--.vim/custom-settings.vim240
4 files changed, 514 insertions, 0 deletions
diff --git a/.vim/addons-settings.vim b/.vim/addons-settings.vim
new file mode 100644
index 0000000..77a36aa
--- /dev/null
+++ b/.vim/addons-settings.vim
@@ -0,0 +1,181 @@
+" ================ CTRLP settings ================
+if exists("g:ctrlp_user_command")
+ unlet g:ctrlp_user_command
+endif
+if executable('ag')
+ " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
+ let g:ctrlp_user_command =
+ \ 'ag %s --files-with-matches -g "" --ignore "\.git$\|\.hg$\|\.svn$"'
+
+ " ag is fast enough that CtrlP doesn't need to cache
+ let g:ctrlp_use_caching = 0
+else
+ " Fall back to using git ls-files if Ag is not available
+ let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'
+ let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . --cached --exclude-standard --others']
+endif
+
+" Default to filename searches - so that appctrl will find application
+" controller
+let g:ctrlp_by_filename = 1
+
+" Don't jump to already open window. This is annoying if you are maintaining
+" several Tab workspaces and want to open two windows into the same file.
+let g:ctrlp_switch_buffer = 0
+
+" We don't want to use Ctrl-p as the mapping because
+" it interferes with YankRing (paste, then hit ctrl-p)
+let g:ctrlp_map = ',t'
+nnoremap <silent> ,t :CtrlP<CR>
+
+" Additional mapping for buffer search
+nnoremap <silent> ,b :CtrlPBuffer<cr>
+
+" Cmd-Shift-P to clear the cache
+nnoremap <silent> <D-P> :ClearCtrlPCache<cr>
+
+" Idea from : http://www.charlietanksley.net/blog/blog/2011/10/18/vim-navigation-with-lustyexplorer-and-lustyjuggler/
+" Open CtrlP starting from a particular path, making it much
+" more likely to find the correct thing first. mnemonic 'jump to [something]'
+map ,ja :CtrlP app/assets<CR>
+map ,jm :CtrlP app/models<CR>
+map ,jc :CtrlP app/controllers<CR>
+map ,jv :CtrlP app/views<CR>
+map ,jh :CtrlP app/helpers<CR>
+map ,jl :CtrlP lib<CR>
+map ,jp :CtrlP public<CR>
+map ,js :CtrlP spec<CR>
+map ,jf :CtrlP fast_spec<CR>
+map ,jd :CtrlP db<CR>
+map ,jC :CtrlP config<CR>
+map ,jV :CtrlP vendor<CR>
+map ,jF :CtrlP factories<CR>
+map ,jT :CtrlP test<CR>
+
+"Cmd-Shift-(M)ethod - jump to a method (tag in current file)
+"Ctrl-m is not good - it overrides behavior of Enter
+nnoremap <silent> <D-M> :CtrlPBufTag<CR>
+
+" ================ fugitive settings ================
+" For fugitive.git, dp means :diffput. Define dg to mean :diffget
+nnoremap <silent> ,dg :diffget<CR>
+nnoremap <silent> ,dp :diffput<CR>
+" The tree buffer makes it easy to drill down through the directories of your
+" git repository, but it’s not obvious how you could go up a level to the
+" parent directory. Here’s a mapping of .. to the above command, but
+" only for buffers containing a git blob or tree
+autocmd User fugitive
+ \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' |
+ \ nnoremap <buffer> .. :edit %:h<CR> |
+ \ endif
+
+" Every time you open a git object using fugitive it creates a new buffer.
+" This means that your buffer listing can quickly become swamped with
+" fugitive buffers. This prevents this from becomming an issue:
+
+autocmd BufReadPost fugitive://* set bufhidden=delete
+
+" ================ jquery settings ================
+autocmd BufRead,BufNewFile *.js set ft=javascript syntax=jquery
+
+" ================ lightline settings ================
+let g:lightline = {
+ \ 'colorscheme': 'wombat',
+ \ 'active': {
+ \ 'left': [ [ 'mode' ],
+ \ [ 'fugitive', 'readonly', 'filename', 'modified' ] ]
+ \ },
+ \ 'component': {
+ \ 'readonly': '%{&readonly?"⭤":""}',
+ \ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}'
+ \ },
+ \ 'component_visible_condition': {
+ \ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())'
+ \ },
+ \ 'separator': { 'left': '⮀', 'right': '⮂' },
+ \ 'subseparator': { 'left': '⮁', 'right': '⮃' }
+ \ }
+
+set laststatus=2
+
+" ================ nerdtree-tabs settings ================
+" Auto open nerd tree on startup
+let g:nerdtree_tabs_open_on_gui_startup = 0
+" Focus in the main content window
+let g:nerdtree_tabs_focus_on_files = 1
+
+" ================ nerdtree settings ================
+" Make nerdtree look nice
+let NERDTreeMinimalUI = 1
+let NERDTreeDirArrows = 1
+let g:NERDTreeWinSize = 30
+
+" ================ persistent-undo settings ================
+" persistent undos - undo after you re-open the file
+" but this gives warnings under command line vim
+" use only in macvim
+if v:version > '702'
+ set undodir=~/.vim/backups
+ set undofile
+endif
+
+" ================ showmarks settings ================
+" Tell showmarks to not include the various brace marks (),{}, etc
+let g:showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY"
+
+" ================ syntastic settings ================
+"mark syntax errors with :signs
+let g:syntastic_enable_signs=1
+"automatically jump to the error when saving the file
+let g:syntastic_auto_jump=0
+"show the error list automatically
+let g:syntastic_auto_loc_list=1
+"don't care about warnings
+let g:syntastic_quiet_messages = {'level': 'warnings'}
+
+" ================ tComment settings ================
+" tComment maps 'gcc' to comment current line
+" this adds 'gcp' comment current paragraph (block)
+" using tComment's built in <c-_>p mapping
+nmap <silent> gcp <c-_>p
+
+" ================ tidy settings ================
+:vmap ,gt :!tidy -q -i --show-errors 0<CR>
+
+" ================ vim-indent-guides settings ================
+let g:indent_guides_auto_colors = 1
+let g:indent_guides_start_level = 2
+let g:indent_guides_guide_size = 1
+
+" ================ vim-session settings ================
+" Prevent vim-session from asking us to load the session.
+" If you want to load the session, use :SaveSession and :OpenSession
+let g:session_autosave = 'no'
+let g:session_autoload = 'no'
+
+" ================ tabular settings ================
+" Hit Cmd-Shift-A then type a character you want to align by
+nmap <D-A> :Tabularize /
+vmap <D-A> :Tabularize /
+
+" ================ sudo settings ================
+" w!! to write a file as sudo
+" stolen from Steve Losh
+cmap w!! w !sudo tee % >/dev/null
+
+" ================ YankRing settings ==============
+
+let g:yankring_history_dir = '$HOME/.vim'
+"let g:yankring_history_file = '.yankring-history'
+nnoremap ,yr :YRShow<CR>
+nnoremap <C-y> :YRShow<CR>
+
+" ================ vim-processing settings ==============
+let g:processing_doc_style='local'
+let g:processing_doc_path='~/.vim/bundle/vim-processing/syntax/processing.vim'
+
+" ================ vim-colors-solarized ==============
+let g:solarized_termcolors=256
+let g:solarized_termtrans=1
+"set background=black
+"colorscheme solarized
diff --git a/.vim/addons.vim b/.vim/addons.vim
new file mode 100644
index 0000000..470014c
--- /dev/null
+++ b/.vim/addons.vim
@@ -0,0 +1,56 @@
+" git
+VAMActivate fugitive
+VAMActivate github:tpope/vim-git
+" appearance
+VAMActivate showmarks
+VAMActivate github:itchyny/lightline.vim
+VAMActivate github:skwp/vim-colors-solarized
+" languages
+VAMActivate iptables
+VAMActivate github:pangloss/vim-javascript
+VAMActivate github:itspriddle/vim-jquery
+VAMActivate github:scrooloose/syntastic.git
+VAMActivate github:honza/vim-snippets
+VAMActivate github:garbas/vim-snipmate
+VAMActivate github:gerw/vim-latex-suite
+VAMActivate github:sudar/vim-arduino-syntax
+VAMActivate github:sudar/vim-arduino-snippets
+VAMActivate github:sophacles/vim-processing
+VAMActivate github:Matt-Stevens/vim-systemd-syntax
+VAMActivate github:klen/python-mode.git
+VAMActivate github:sjas/octave.vim
+VAMActivate github:wannesm/wmgraphviz.vim.git
+" project
+VAMActivate github:scrooloose/nerdtree.git
+VAMActivate github:jistr/vim-nerdtree-tabs.git
+VAMActivate github:xolox/vim-misc
+VAMActivate github:xolox/vim-session
+VAMActivate github:kien/ctrlp.vim
+" textobjects
+VAMActivate github:coderifous/textobj-word-column.vim
+VAMActivate github:kana/vim-textobj-datetime
+VAMActivate github:kana/vim-textobj-entire
+VAMActivate github:kana/vim-textobj-function
+VAMActivate github:kana/vim-textobj-user
+VAMActivate github:lucapette/vim-textobj-underscore
+VAMActivate github:nathanaelkane/vim-indent-guides
+VAMActivate github:thinca/vim-textobj-function-javascript
+VAMActivate github:vim-scripts/argtextobj.vim
+VAMActivate github:austintaylor/vim-indentobject
+" improvements
+VAMActivate sudo
+VAMActivate tmux
+VAMActivate YankRing
+VAMActivate netrw
+VAMActivate tComment
+VAMActivate VimRepress
+VAMActivate github:tpope/vim-abolish
+VAMActivate github:tpope/vim-endwise.git
+VAMActivate github:tpope/vim-ragtag
+VAMActivate github:tpope/vim-repeat.git
+VAMActivate github:tpope/vim-surround.git
+VAMActivate github:tpope/vim-unimpaired
+VAMActivate github:goldfeld/ctrlr.vim
+VAMActivate github:jamessan/vim-gnupg
+VAMActivate github:Valloric/YouCompleteMe.git
+VAMActivate github:godlygeek/tabular
diff --git a/.vim/custom-functions.vim b/.vim/custom-functions.vim
new file mode 100644
index 0000000..ecf92bd
--- /dev/null
+++ b/.vim/custom-functions.vim
@@ -0,0 +1,37 @@
+" ================ strip trailing whitespaces ================
+" via: http://rails-bestpractices.com/posts/60-remove-trailing-whitespace
+" Strip trailing whitespace
+function! <SID>StripTrailingWhitespaces()
+ " Preparation: save last search, and cursor position.
+ let _s=@/
+ let l = line(".")
+ let c = col(".")
+ " Do the business:
+ %s/\s\+$//e
+ " Clean up: restore previous search history, and cursor position
+ let @/=_s
+ call cursor(l, c)
+endfunction
+command! StripTrailingWhitespaces call <SID>StripTrailingWhitespaces()
+nmap ,w :StripTrailingWhitespaces<CR>
+" ================ text wrapping ================
+" http://vimcasts.org/episodes/soft-wrapping-text/
+function! SetupWrapping()
+ set wrap linebreak nolist
+ set showbreak=…
+endfunction
+
+" TODO: this should happen automatically for certain file types (e.g. markdown)
+command! -nargs=* Wrap :call SetupWrapping()<CR>
+
+vmap <D-j> gj
+vmap <D-k> gk
+vmap <D-$> g$
+vmap <D-^> g^
+vmap <D-0> g^
+nmap <D-j> gj
+nmap <D-k> gk
+nmap <D-$> g$
+nmap <D-^> g^
+nmap <D-0> g^
+
diff --git a/.vim/custom-settings.vim b/.vim/custom-settings.vim
new file mode 100644
index 0000000..9233b35
--- /dev/null
+++ b/.vim/custom-settings.vim
@@ -0,0 +1,240 @@
+" ================ keymap settings ================
+" ========================================
+" General vim sanity improvements
+" ========================================
+"
+"
+" alias yw to yank the entire word 'yank inner word'
+" even if the cursor is halfway inside the word
+" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
+nnoremap ,yw yiww
+
+" ,ow = 'overwrite word', replace a word with what's in the yank buffer
+" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
+nnoremap ,ow "_diwhp
+
+"make Y consistent with C and D
+nnoremap Y y$
+function! YRRunAfterMaps()
+ nnoremap Y :<C-U>YRYankCount 'y$'<CR>
+endfunction
+
+" Make 0 go to the first character rather than the beginning
+" of the line. When we're programming, we're almost always
+" interested in working with text rather than empty space. If
+" you want the traditional beginning of line, use ^
+nnoremap 0 ^
+nnoremap ^ 0
+
+" ========================================
+" RSI Prevention - keyboard remaps
+" ========================================
+" Certain things we do every day as programmers stress
+" out our hands. For example, typing underscores and
+" dashes are very common, and in position that require
+" a lot of hand movement. Vim to the rescue
+"
+" Now using the middle finger of either hand you can type
+" underscores with apple-k or apple-d, and add Shift
+" to type dashes
+imap <silent> <D-k> _
+imap <silent> <D-d> _
+imap <silent> <D-K> -
+imap <silent> <D-D> -
+
+" ,# Surround a word with #{ruby interpolation}
+map ,# ysiw#
+vmap ,# c#{<C-R>"}<ESC>
+
+" ," Surround a word with "quotes"
+map ," ysiw"
+vmap ," c"<C-R>""<ESC>
+
+" ,' Surround a word with 'single quotes'
+map ,' ysiw'
+vmap ,' c'<C-R>"'<ESC>
+
+" ,) or ,( Surround a word with (parens)
+" The difference is in whether a space is put in
+map ,( ysiw(
+map ,) ysiw)
+vmap ,( c( <C-R>" )<ESC>
+vmap ,) c(<C-R>")<ESC>
+
+" ,[ Surround a word with [brackets]
+map ,] ysiw]
+map ,[ ysiw[
+vmap ,[ c[ <C-R>" ]<ESC>
+vmap ,] c[<C-R>"]<ESC>
+
+" ,{ Surround a word with {braces}
+map ,} ysiw}
+map ,{ ysiw{
+vmap ,} c{ <C-R>" }<ESC>
+vmap ,{ c{<C-R>"}<ESC>
+
+map ,` ysiw`
+
+" gary bernhardt's hashrocket
+imap <c-l> <space>=><space>
+
+" Change inside various enclosures with Cmd-" and Cmd-'
+" The f makes it find the enclosure so you don't have
+" to be standing inside it
+nnoremap <D-'> f'ci'
+nnoremap <D-"> f"ci"
+nnoremap <D-(> f(ci(
+nnoremap <D-)> f)ci)
+nnoremap <D-[> f[ci[
+nnoremap <D-]> f]ci]
+
+"Go to last edit location with ,.
+nnoremap ,. '.
+
+"When typing a string, your quotes auto complete. Move past the quote
+"while still in insert mode by hitting Ctrl-a. Example:
+"
+" type 'foo<c-a>
+"
+" the first quote will autoclose so you'll get 'foo' and hitting <c-a> will
+" put the cursor right after the quote
+imap <C-a> <esc>wa
+
+" ==== NERD tree
+" Cmd-Shift-N for nerd tree
+nmap <D-N> :NERDTreeToggle<CR>
+" Open the project tree and expose current file in the nerdtree with Ctrl-\
+nnoremap <silent> <C-\> :NERDTreeFind<CR>:vertical res 30<CR>
+
+" ,q to toggle quickfix window (where you have stuff like Ag)
+" ,oq to open it back up (rare)
+nmap <silent> ,qc :cclose<CR>
+nmap <silent> ,qo :copen<CR>
+
+" move up/down quickly by using Cmd-j, Cmd-k
+" which will move us around by functions
+nnoremap <silent> <D-j> }
+nnoremap <silent> <D-k> {
+autocmd FileType ruby map <buffer> <D-j> ]m
+autocmd FileType ruby map <buffer> <D-k> [m
+autocmd FileType rspec map <buffer> <D-j> }
+autocmd FileType rspec map <buffer> <D-k> {
+autocmd FileType javascript map <buffer> <D-k> }
+autocmd FileType javascript map <buffer> <D-j> {
+
+
+" Command-/ to toggle comments
+map <D-/> :TComment<CR>
+imap <D-/> <Esc>:TComment<CR>i
+
+
+"Move back and forth through previous and next buffers
+"with ,z and ,x
+nnoremap <silent> ,z :bp<CR>
+nnoremap <silent> ,x :bn<CR>
+
+" ==============================
+" Window/Tab/Split Manipulation
+" ==============================
+" Move between split windows by using the four directions H, L, I, N
+nnoremap <silent> <C-h> <C-w>h
+nnoremap <silent> <C-l> <C-w>l
+nnoremap <silent> <C-k> <C-w>k
+nnoremap <silent> <C-j> <C-w>j
+
+" Make gf (go to file) create the file, if not existent
+nnoremap gf :e<cfile><CR>
+nnoremap <C-w>f :sp +e<cfile><CR>
+nnoremap <C-w>gf :tabe<cfile><CR>
+
+" Zoom in
+map <silent> ,gz <C-w>o
+
+" Use numbers to pick the tab you want (like iTerm)
+map <silent> <D-1> :tabn 1<cr>
+map <silent> <D-2> :tabn 2<cr>
+map <silent> <D-3> :tabn 3<cr>
+map <silent> <D-4> :tabn 4<cr>
+map <silent> <D-5> :tabn 5<cr>
+map <silent> <D-6> :tabn 6<cr>
+map <silent> <D-7> :tabn 7<cr>
+map <silent> <D-8> :tabn 8<cr>
+map <silent> <D-9> :tabn 9<cr>
+
+" Create window splits easier. The default
+" way is Ctrl-w,v and Ctrl-w,s. I remap
+" this to vv and ss
+nnoremap <silent> vv <C-w>v
+nnoremap <silent> ss <C-w>s
+
+" Resize windows with arrow keys
+nnoremap <D-Up> <C-w>+
+nnoremap <D-Down> <C-w>-
+nnoremap <D-Left> <C-w><
+nnoremap <D-Right> <C-w>>
+
+" create <%= foo %> erb tags using Ctrl-k in edit mode
+imap <silent> <C-K> <%= %><Esc>3hi
+
+" create <%= foo %> erb tags using Ctrl-j in edit mode
+imap <silent> <C-J> <% %><Esc>2hi
+
+" ============================
+" Shortcuts for everyday tasks
+" ============================
+
+" copy current filename into system clipboard - mnemonic: (c)urrent(f)ilename
+" this is helpful to paste someone the path you're looking at
+nnoremap <silent> ,cf :let @* = expand("%:~")<CR>
+nnoremap <silent> ,cn :let @* = expand("%:t")<CR>
+
+"Clear current search highlight by double tapping //
+nmap <silent> // :nohlsearch<CR>
+
+"(v)im (c)ommand - execute current line as a vim command
+nmap <silent> ,vc yy:<C-f>p<C-c><CR>
+
+"(v)im (r)eload
+nmap <silent> ,vr :so %<CR>
+
+" Type ,hl to toggle highlighting on/off, and show current value.
+noremap ,hl :set hlsearch! hlsearch?<CR>
+
+" These are very similar keys. Typing 'a will jump to the line in the current
+" file marked with ma. However, `a will jump to the line and column marked
+" with ma. It’s more useful in any case I can imagine, but it’s located way
+" off in the corner of the keyboard. The best way to handle this is just to
+" swap them: http://items.sjbach.com/319/configuring-vim-right
+nnoremap ' `
+nnoremap ` '
+
+" ============================
+" Tabularize - alignment
+" ============================
+" Hit Cmd-Shift-A then type a character you want to align by
+nmap <D-A> :Tabularize /
+vmap <D-A> :Tabularize /
+
+" ============================
+" SplitJoin plugin
+" ============================
+nmap sj :SplitjoinSplit<cr>
+nmap sk :SplitjoinJoin<cr>
+
+" Get the current highlight group. Useful for then remapping the color
+map ,hi :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" . " FG:" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"fg#")<CR>
+
+" Source current file Cmd-% (good for vim development)
+map <D-%> :so %<CR>
+
+" ,hp = html preview
+map <silent> ,hp :!open -a Safari %<CR><CR>
+" ================ search settings ================
+" ================ Search Settings =================
+
+set incsearch " Find the next match as we type the search
+set hlsearch " Hilight searches by default
+set viminfo='100,f1 " Save up to 100 marks, enable capital marks
+set ignorecase " Ignore case when searching...
+set smartcase " ...unless we type a capital
+