I just had the unfortunate experience of using the standard vimrc on ubuntu (which I loathe, but it's the most stable OS on this VPS), and now I sympathize with people who think they can't use Vim. So here's my much less annoying vimrc. You'll want to make a ~/tmp folder if you don't have one. Adjust the augroups for the languages you use; I was forcing some syntax files to load because they had bad defaults like PHP as HTML, no idea if that's improved.
" Mark Damon Hughes vimrc file. " " To use it, copy it to ~/.vimrc set nocompatible " Use Vim defaults (much better!) filetype plugin on set magic set nrformats= set errorbells set nomore wrapscan noignorecase nohlsearch noshowmatch set backspace=indent,eol,start "set smarttab expandtab shiftwidth=4 set nosmarttab noexpandtab shiftwidth=8 tabstop=8 set encoding=utf-8 fileencoding=utf-8 set listchars=tab:__,eol:$,nbsp:@ set backup backupdir=~/tmp dir=~/tmp set viminfo='100,f1,<100 set tw=80 " I use this default, and override it in the autogroups below " ctrl-] is used by telnet/ssh, so tags are unusable; I use Ctrl-J instead. map <C-J> <C-]> " Don't use Ex mode, use Q for formatting map Q gq map <Tab> >> vmap <Tab> > map <S-Tab> << vmap <S-Tab> < " Always have syntax highlighting on syntax on hi Identifier guifg=blue hi Statement term=bold guifg=blue set guifont=Menlo_Regular:h14 set guioptions=aAemr set showtabline=2 set mousemodel=popup_setpos augroup c au! autocmd BufRead,BufNewFile *.c set ai tw=0 augroup END augroup html au! autocmd BufRead,BufNewFile *.html set tw=0 ai autocmd BufRead,BufNewFile *.html source $VIMRUNTIME/syntax/html.vim augroup END augroup java au! autocmd BufRead,BufNewFile *.java set tw=0 ai augroup END augroup objc au! autocmd BufRead,BufNewFile *.m,*.h set ai tw=0 augroup END augroup php au! autocmd BufRead,BufNewFile *.php,*.inc set tw=0 ai et autocmd BufRead,BufNewFile *.php,*.inc source $VIMRUNTIME/syntax/php.vim augroup END augroup python au! autocmd BufRead,BufNewFile *.py set ai tw=0 augroup END