Prevent pip from running if there isn't a virtualenv
[dotfiles] / .vimrc
diff --git a/.vimrc b/.vimrc
index 8f2bf64..b48496e 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -1,22 +1,59 @@
 " Don't imitate vi.
 set nocompatible
 
-" Show line numbers.
-set number
-set numberwidth=4
+" Make tab-completion work more like bash.
+set wildmenu
+set wildmode=list:full
 
-" Scroll five lines ahead of cursor.
-set scrolloff=5
+" Ignore certain file extensions when tab-completing.
+set wildignore=*.swp,*.bak,*.pyc,*.class,*.o,*.exe
+
+" Set filetype stuff to on.
+filetype on
+filetype plugin on
 
 " Set up autoindentation.
 set smartindent
 filetype indent on
 
+" Example filetype-specific setting:
+" if has('autocmd')
+"     autocmd filetype python set expandtab
+" endif
+
+" Allow folding.
+set foldenable
+set foldmethod=syntax
+set foldlevelstart=99
+
+" Scroll five lines ahead of cursor.
+set scrolloff=5
+
+" Turn off error bells and visual bell
+set noeb vb t_vb=
+
 " Set tabs to width 4.
-set softtabstop=4
-set tabstop=4
-set shiftwidth=4
-set noexpandtab
+filetype plugin indent on
+set shiftwidth=2
+set softtabstop=2
+set tabstop=2
+set expandtab
+
+" language-specific settings
+autocmd FileType python setlocal shiftwidth=4 softtabstop=4 tabstop=4
+
+" Allow backspacing over everything in insert mode.
+set backspace=indent,eol,start
+
+"Highlight bad spacing.
+highlight BadSpacing term=standout ctermbg=cyan
+augroup Spacing
+    autocmd!
+    " Highlight tabulators and trailing spaces
+    autocmd BufNewFile,BufReadPre * match BadSpacing /\(\t\|  *$\)/
+    " Only highlight trailing space in tab-filled formats
+    autocmd FileType help,make match BadSpacing /  *$/
+augroup END
 
 " Search as you type.
 set incsearch
@@ -32,58 +69,33 @@ set splitbelow splitright
 " Line wrapping off
 set nowrap
 
+" Enlarge history and undo/redo buffers.
+set history=1000
+set undolevels=1000
+
 " Reset colors to a clean state.
 if !has('gui_running')
-       set t_Co=8 t_md=
+    set t_Co=8 t_md=
 endif
 
-" Enable syntax "highlighting.
+" Enable syntax highlighting.
 syntax enable
 
-" Force vim to sync syntax "highlighting from the beginning of the file.
+" Force vim to sync syntax highlighting from the beginning of the file.
 syn sync fromstart
 
-" Set the color scheme.
-hi Normal                      cterm=none              ctermfg=white           ctermbg=black   " Plain text.
-
-hi Comment                     cterm=none              ctermfg=darkblue        ctermbg=black   " Comment: // Hello, world
-
-hi Constant                    cterm=none              ctermfg=blue            ctermbg=black   " Constant:
-hi String                      cterm=none              ctermfg=blue            ctermbg=black   "       String: "Hello, world"
-hi Character           cterm=none              ctermfg=blue            ctermbg=black   "       Character: 'a'
-hi Number                      cterm=none              ctermfg=blue            ctermbg=black   "       Number: 234, 0xff
-hi Boolean                     cterm=none              ctermfg=blue            ctermbg=black   "       Boolean: TRUE, false
-hi Float                       cterm=none              ctermfg=blue            ctermbg=black   "       Float: 2.3e10
-
-hi Identifier          cterm=none              ctermfg=white           ctermbg=black   " Identifier: foo
-hi Function                    cterm=none              ctermfg=white           ctermbg=black   "       Function/method: foo()
-
-hi Statement           cterm=none              ctermfg=brown           ctermbg=black   " Statement:
-hi Conditional         cterm=none              ctermfg=brown           ctermbg=black   "       Conditional: if, then, else, endif, switch
-hi Repeat                      cterm=none              ctermfg=brown           ctermbg=black   "       Repeat: for, do, while
-hi Label                       cterm=none              ctermfg=brown           ctermbg=black   "       Label: case, default
-hi Operator                    cterm=none              ctermfg=brown           ctermbg=black   "       Operator: sizeof, +, *
-hi Keyword                     cterm=none              ctermfg=brown           ctermbg=black   "       Keyword: register, const
-hi Exception           cterm=none              ctermfg=brown           ctermbg=black   "       Exception: try, catch, throw
-
-hi PreProc                     cterm=none              ctermfg=darkred         ctermbg=black   " Preprocessor directives:
-hi Include                     cterm=none              ctermfg=darkred         ctermbg=black   "       #include
-hi Define                      cterm=none              ctermfg=darkred         ctermbg=black   "       #define
-hi PreCondit           cterm=none              ctermfg=darkred         ctermbg=black   "       #if, #else, #endif
-
-hi Type                                cterm=none              ctermfg=darkgreen       ctermbg=black   " Types: int, long, char
-hi StorageClass                cterm=none              ctermfg=darkgreen       ctermbg=black   "       Storage modifiers: static, register, volatile
-hi Structure           cterm=none              ctermfg=darkgreen       ctermbg=black   "       User-defined types: struct, union, enum
-hi Typedef                     cterm=none              ctermfg=darkgreen       ctermbg=black   "       typedef
-
-hi Special                     cterm=none              ctermfg=magenta         ctermbg=black   " Special symbols
-hi SpecialChar         cterm=none              ctermfg=magenta         ctermbg=black   "       Special characters in a constant
-hi Delimiter           cterm=none              ctermfg=magenta         ctermbg=black   "       Character that is highlighted
-hi SpecialComment      cterm=none              ctermfg=magenta         ctermbg=black   "       Special things inside a comment
-hi Debug                       cterm=none              ctermfg=magenta         ctermbg=black   "       Debugging statements.
-
-hi Underlined          cterm=underline ctermfg=magenta         ctermbg=black   " Underlined stuff (HTML links)
-
-hi Error                       cterm=none              ctermfg=red                     ctermbg=black   " Erroneous content
-
-hi Todo                                cterm=bold              ctermfg=red                     ctermbg=black   " TODO, FIXME, XXX comments.
+" Set the color scheme to desert.
+colorscheme desert
+
+" Unmap the arrow keys to prevent bad habits.
+noremap  <Up> ""
+noremap! <Up> <Esc>
+noremap  <Down> ""
+noremap! <Down> <Esc>
+noremap  <Left> ""
+noremap! <Left> <Esc>
+noremap  <Right> ""
+noremap! <Right> <Esc>
+
+" Automatically reload the .vimrc when changes are made to it
+au! BufWritePost .vimrc source %