+
+set showbreak=▒▒
+
+set pastetoggle=<F11>
+" split right when using :vsp
+set splitright
+
+set scrolloff=3 " keep at least 3 lines above/below
+" Press i to enter insert mode, and ii to exit.
+imap ii <Esc>
+" Press `` to toggle insert and replace mode (no <Insert> key on Mac keyboard)
+imap `` <Insert>
+
+" Jump to the next or previous line that has the same level or a lower
+" level of indentation than the current line.
+"
+" exclusive (bool): true: Motion is exclusive
+" false: Motion is inclusive
+" fwd (bool): true: Go to next line
+" false: Go to previous line
+" lowerlevel (bool): true: Go to line with lower indentation level
+" false: Go to line with the same indentation level
+" skipblanks (bool): true: Skip blank lines
+" false: Don't skip blank lines
+function! NextIndent(exclusive, fwd, lowerlevel, skipblanks)
+ let line = line('.')
+ let column = col('.')
+ let lastline = line('$')
+ let indent = indent(line)
+ let stepvalue = a:fwd ? 1 : -1
+ while (line > 0 && line <= lastline)
+ let line = line + stepvalue
+ if ( ! a:lowerlevel && indent(line) == indent ||
+ \ a:lowerlevel && indent(line) < indent)
+ if (! a:skipblanks || strlen(getline(line)) > 0)
+ if (a:exclusive)
+ let line = line - stepvalue
+ endif
+ exe line
+ exe "normal " column . "|"
+ return
+ endif
+ endif
+ endwhile
+endfunction
+
+" Moving back and forth between lines of same or lower indentation.
+nnoremap <silent> [l :call NextIndent(0, 0, 0, 1)<CR>
+nnoremap <silent> ]l :call NextIndent(0, 1, 0, 1)<CR>
+nnoremap <silent> [L :call NextIndent(0, 0, 1, 1)<CR>
+nnoremap <silent> ]L :call NextIndent(0, 1, 1, 1)<CR>
+vnoremap <silent> [l <Esc>:call NextIndent(0, 0, 0, 1)<CR>m'gv''
+vnoremap <silent> ]l <Esc>:call NextIndent(0, 1, 0, 1)<CR>m'gv''
+vnoremap <silent> [L <Esc>:call NextIndent(0, 0, 1, 1)<CR>m'gv''
+vnoremap <silent> ]L <Esc>:call NextIndent(0, 1, 1, 1)<CR>m'gv''
+onoremap <silent> [l :call NextIndent(0, 0, 0, 1)<CR>
+onoremap <silent> ]l :call NextIndent(0, 1, 0, 1)<CR>
+onoremap <silent> [L :call NextIndent(1, 0, 1, 1)<CR>
+onoremap <silent> ]L :call NextIndent(1, 1, 1, 1)<CR>
+" end of jump indent