-" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
-" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
-" you can find below. If you wish to change any of those settings, you should
-" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
-" everytime an upgrade of the vim packages is performed. It is recommended to
-" make changes after sourcing debian.vim since it alters the value of the
-" 'compatible' option.
-
-" This line should not be removed as it ensures that various options are
-" properly set to work with the Vim-related packages available in Debian.
-runtime! debian.vim
-
-" Uncomment the next line to make Vim more Vi-compatible
-" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
-" options, so any other options should be set AFTER setting 'compatible'.
-"set compatible
-
-" Vim5 and later versions support syntax highlighting. Uncommenting the
-" following enables syntax highlighting by default.
-if has("syntax")
- syntax on
+" An example for a vimrc file.
+"
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last change: 2008 Dec 17
+"
+" To use it, copy it to
+" for Unix and OS/2: ~/.vimrc
+" for Amiga: s:.vimrc
+" for MS-DOS and Win32: $VIM\_vimrc
+" for OpenVMS: sys$login:.vimrc
+
+" When started as "evim", evim.vim will already have done these settings.
+if v:progname =~? "evim"
+ finish
endif
-" Ask what to do when closing unsaved documents
-set confirm
+" TODO
+" organize this file, never thought it'll get this big
+" TODO
-" If using a dark background within the editing area and syntax highlighting
-" turn on this option as well
-set background=dark
+" pathogen.vim runtime path manipulation
+silent! call pathogen#infect()
-" Uncomment the following to have Vim jump to the last position when
-" reopening a file
-if has("autocmd")
- au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
+" Use Vim settings, rather than Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+
+" allow backspacing over everything in insert mode
+set backspace=indent,eol,start
+
+if has("vms")
+ set nobackup " do not keep a backup file, use versions instead
+else
+ set backup " keep a backup file
+ set backupdir=$HOME/.vim/backupdir
endif
+set history=50 " keep 50 lines of command line history
+set ruler " show the cursor position all the time
+set showcmd " display incomplete commands
+set incsearch " do incremental searching
+set number " show some linenumbers
+
+" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
+" let &guioptions = substitute(&guioptions, "t", "", "g")
-" Uncomment the following to have Vim load indentation rules and plugins
-" according to the detected filetype.
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
+" so that you can undo CTRL-U after inserting a line break.
+inoremap <C-U> <C-G>u<C-U>
+
+"paste toggle
+nmap <F11> :set paste! paste?<CR>
+imap <F11> <C-o>:set paste!<CR>
+vmap <F11> <Esc>:set paste!<CR>gv
+set pastetoggle=<F11>
+
+" In many terminal emulators the mouse works just fine, thus enable it.
+"if has('mouse')
+" "xterm mouse with middleclick paste
+" nnoremap <MiddleMouse> i<MiddleMouse>
+" vnoremap <MiddleMouse> s<MiddleMouse>
+" set mouse=rnv
+" "choose either one
+" set ttymouse=xterm
+" "set ttymouse=xterm2
+"endif
+
+" Switch syntax highlighting on, when the terminal has colors
+" Also switch on highlighting the last used search pattern.
+if &t_Co > 2 || has("gui_running")
+ syntax on
+ set hlsearch
+endif
+
+" Only do this part when compiled with support for autocommands.
if has("autocmd")
- filetype plugin indent on
+
+ " Enable file type detection.
+ " Use the default filetype settings, so that mail gets 'tw' set to 72,
+ " 'cindent' is on in C files, etc.
+ " Also load indent files, to automatically do language-dependent indenting.
+ filetype plugin indent on
+
+ " Put these in an autocmd group, so that we can delete them easily.
+ augroup vimrcEx
+ au!
+
+ " For all text files set 'textwidth' to 78 characters.
+ autocmd FileType text setlocal textwidth=78
+
+ " When editing a file, always jump to the last known cursor position.
+ " Don't do it when the position is invalid or when inside an event handler
+ " (happens when dropping a file on gvim).
+ " Also don't do it when the mark is in the first line, that is the default
+ " position when opening a file.
+ autocmd BufReadPost *
+ \ if line("'\"") > 1 && line("'\"") <= line("$") |
+ \ exe "normal! g`\"" |
+ \ endif
+
+ augroup END
+
+else
+
+ set autoindent " always set autoindenting on
+
+endif " has("autocmd")
+
+" Convenient command to see the difference between the current buffer and the
+" file it was loaded from, thus the changes you made.
+" Only define it when not defined already.
+if !exists(":DiffOrig")
+ command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+ \ | wincmd p | diffthis
endif
+" Ask what to do when closing unsaved documents
+set confirm
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well
+set background=dark
+
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
-set showcmd " Show (partial) command in status line.
-set showmatch " Show matching brackets.
-set ignorecase " Do case insensitive matching
-set smartcase " Do smart case matching
-set incsearch " Incremental search
-set autowrite " Automatically save before commands like :next and :make
-set hidden " Hide buffers when they are abandoned
-" set mouse=a " Enable mouse usage (all modes)
-
-" Source a global configuration file if available
-if filereadable("/etc/vim/vimrc.local")
- source /etc/vim/vimrc.local
-endif
+set showcmd " Show (partial) command in status line.
+set showmatch " Show matching brackets.
+set ignorecase " Do case insensitive matching
+set smartcase " Do smart case matching
+set incsearch " Incremental search
+set autowrite " Automatically save before commands like :next and :make
+"set hidden " Hide buffers when they are abandoned
+"set mouse=a " Enable mouse usage (all modes)
-" expand tab
-set softtabstop=4
-set shiftwidth=4
+" expand tabs
+set softtabstop=4
+set shiftwidth=4
set expandtab
-set nowrap
+
+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