summary refs log tree commit diff
path: root/.vim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.vim/colors/hybrid.vim441
-rw-r--r--.vimrc303
-rw-r--r--.vimrc.full304
3 files changed, 771 insertions, 277 deletions
diff --git a/.vim/colors/hybrid.vim b/.vim/colors/hybrid.vim
new file mode 100644
index 00000000..166907ba
--- /dev/null
+++ b/.vim/colors/hybrid.vim
@@ -0,0 +1,441 @@
+" File:       hybrid.vim
+" Maintainer: Andrew Wong (w0ng)
+" URL:        https://github.com/w0ng/vim-hybrid
+" Modified:   27 Jan 2013 07:33 AM AEST
+" License:    MIT
+
+" Description:"{{{
+" ----------------------------------------------------------------------------
+" The RGB colour palette is taken from Tomorrow-Night.vim:
+" https://github.com/chriskempson/vim-tomorrow-theme
+"
+" The syntax highlighting scheme is taken from jellybeans.vim:
+" https://github.com/nanotech/jellybeans.vim
+"
+" The code taken from solarized.vim
+" https://github.com/altercation/vim-colors-solarized
+
+"}}}
+" Requirements And Recommendations:"{{{
+" ----------------------------------------------------------------------------
+" This colourscheme is intended for use on:
+"   - gVim 7.3 for Linux, Mac and Windows.
+"   - Vim 7.3 for Linux, using a 256 colour enabled terminal.
+"
+" By default, Vim will use the closest matching cterm equivalent of the RGB
+" colours.
+"
+" However, Due to the limited 256 palette, colours in Vim and gVim will still
+" be noticeably different. In order to get a uniform appearance and the way
+" that this colourscheme was intended, it is HIGHLY recommended that you:
+"
+" 1.  Add these colours to ~/.Xresources:
+"
+"       https://gist.github.com/3278077
+"
+" 2.  Use Xresources colours by setting in ~/.vimrc:
+"
+"       let g:hybrid_use_Xresources = 1
+"       colorscheme hybrid
+"
+" For iTerm2 users:
+" 1.  Install this color preset on your iTerm2:
+"
+"       https://gist.github.com/luan/6362811
+"
+" 2. Use iTerm colours by setting in ~/.vimrc:
+"
+"       let g:hybrid_use_iTerm_colors = 1
+"       colorscheme hybrid
+"
+
+"}}}
+" Initialisation:"{{{
+" ----------------------------------------------------------------------------
+if !has("gui_running") && &t_Co < 256
+  finish
+endif
+
+if !exists("g:hybrid_use_Xresources")
+  let g:hybrid_use_Xresources = 0
+endif
+
+if !exists("g:hybrid_use_iTerm_colors")
+  let g:hybrid_use_iTerm_colors = 0
+endif
+
+set background=dark
+hi clear
+
+if exists("syntax_on")
+  syntax reset
+endif
+
+let colors_name = "hybrid"
+
+"}}}
+" GUI And Cterm Palettes:"{{{
+" ----------------------------------------------------------------------------
+if has("gui_running")
+  let s:vmode      = "gui"
+  let s:background = "#1d1f21"
+  let s:foreground = "#c5c8c6"
+  let s:selection  = "#373b41"
+  let s:line       = "#282a2e"
+  let s:comment    = "#707880"
+  let s:red        = "#cc6666"
+  let s:orange     = "#de935f"
+  let s:yellow     = "#f0c674"
+  let s:green      = "#b5bd68"
+  let s:aqua       = "#8abeb7"
+  let s:blue       = "#81a2be"
+  let s:purple     = "#b294bb"
+  let s:window     = "#303030"
+  let s:darkcolumn = "#1c1c1c"
+  let s:addbg      = "#5F875F"
+  let s:addfg      = "#d7ffaf"
+  let s:changebg   = "#5F5F87"
+  let s:changefg   = "#d7d7ff"
+  let s:darkblue   = "#00005f"
+  let s:darkcyan   = "#005f5f"
+  let s:darkred    = "#5f0000"
+  let s:darkpurple = "#5f005f"
+else
+  let s:vmode      = "cterm"
+  let s:background = "234"
+  let s:window     = "236"
+  let s:darkcolumn = "234"
+  let s:addbg      = "65"
+  let s:addfg      = "193"
+  let s:changebg   = "60"
+  let s:changefg   = "189"
+  let s:darkblue   = "17"
+  let s:darkcyan   = "24"
+  let s:darkred    = "52"
+  let s:darkpurple = "53"
+  if g:hybrid_use_Xresources == 1
+    let s:foreground = "15"   " White
+    let s:selection  = "8"    " DarkGrey
+    let s:line       = "0"    " Black
+    let s:comment    = "7"    " LightGrey
+    let s:red        = "9"    " LightRed
+    let s:orange     = "3"    " DarkYellow
+    let s:yellow     = "11"   " LightYellow
+    let s:green      = "10"   " LightGreen
+    let s:aqua       = "14"   " LightCyan
+    let s:blue       = "12"   " LightBlue
+    let s:purple     = "13"   " LightMagenta
+  elseif g:hybrid_use_iTerm_colors == 1
+    let s:background = "NONE"
+    let s:foreground = "7"
+    let s:selection  = "0"
+    let s:line       = "0"
+    let s:comment    = "15"
+    let s:red        = "1"
+    let s:orange     = "11"
+    let s:yellow     = "3"
+    let s:green      = "2"
+    let s:aqua       = "6"
+    let s:blue       = "4"
+    let s:purple     = "5"
+  else
+    let s:foreground = "250"
+    let s:selection  = "237"
+    let s:line       = "235"
+    let s:comment    = "243"
+    let s:red        = "167"
+    let s:orange     = "173"
+    let s:yellow     = "221"
+    let s:green      = "143"
+    let s:aqua       = "109"
+    let s:blue       = "110"
+    let s:purple     = "139"
+  endif
+endif
+
+"}}}
+" Formatting Options:"{{{
+" ----------------------------------------------------------------------------
+let s:none   = "NONE"
+let s:t_none = "NONE"
+let s:n      = "NONE"
+let s:c      = ",undercurl"
+let s:r      = ",reverse"
+let s:s      = ",standout"
+let s:b      = ",bold"
+let s:u      = ",underline"
+let s:i      = ",italic"
+
+"}}}
+" Highlighting Primitives:"{{{
+" ----------------------------------------------------------------------------
+exe "let s:bg_none       = ' ".s:vmode."bg=".s:none      ."'"
+exe "let s:bg_foreground = ' ".s:vmode."bg=".s:foreground."'"
+exe "let s:bg_background = ' ".s:vmode."bg=".s:background."'"
+exe "let s:bg_selection  = ' ".s:vmode."bg=".s:selection ."'"
+exe "let s:bg_line       = ' ".s:vmode."bg=".s:line      ."'"
+exe "let s:bg_comment    = ' ".s:vmode."bg=".s:comment   ."'"
+exe "let s:bg_red        = ' ".s:vmode."bg=".s:red       ."'"
+exe "let s:bg_orange     = ' ".s:vmode."bg=".s:orange    ."'"
+exe "let s:bg_yellow     = ' ".s:vmode."bg=".s:yellow    ."'"
+exe "let s:bg_green      = ' ".s:vmode."bg=".s:green     ."'"
+exe "let s:bg_aqua       = ' ".s:vmode."bg=".s:aqua      ."'"
+exe "let s:bg_blue       = ' ".s:vmode."bg=".s:blue      ."'"
+exe "let s:bg_purple     = ' ".s:vmode."bg=".s:purple    ."'"
+exe "let s:bg_window     = ' ".s:vmode."bg=".s:window    ."'"
+exe "let s:bg_darkcolumn = ' ".s:vmode."bg=".s:darkcolumn."'"
+exe "let s:bg_addbg      = ' ".s:vmode."bg=".s:addbg     ."'"
+exe "let s:bg_addfg      = ' ".s:vmode."bg=".s:addfg     ."'"
+exe "let s:bg_changebg   = ' ".s:vmode."bg=".s:changebg  ."'"
+exe "let s:bg_changefg   = ' ".s:vmode."bg=".s:changefg  ."'"
+exe "let s:bg_darkblue   = ' ".s:vmode."bg=".s:darkblue  ."'"
+exe "let s:bg_darkcyan   = ' ".s:vmode."bg=".s:darkcyan  ."'"
+exe "let s:bg_darkred    = ' ".s:vmode."bg=".s:darkred   ."'"
+exe "let s:bg_darkpurple = ' ".s:vmode."bg=".s:darkpurple."'"
+
+exe "let s:fg_none       = ' ".s:vmode."fg=".s:none      ."'"
+exe "let s:fg_foreground = ' ".s:vmode."fg=".s:foreground."'"
+exe "let s:fg_background = ' ".s:vmode."fg=".s:background."'"
+exe "let s:fg_selection  = ' ".s:vmode."fg=".s:selection ."'"
+exe "let s:fg_line       = ' ".s:vmode."fg=".s:line      ."'"
+exe "let s:fg_comment    = ' ".s:vmode."fg=".s:comment   ."'"
+exe "let s:fg_red        = ' ".s:vmode."fg=".s:red       ."'"
+exe "let s:fg_orange     = ' ".s:vmode."fg=".s:orange    ."'"
+exe "let s:fg_yellow     = ' ".s:vmode."fg=".s:yellow    ."'"
+exe "let s:fg_green      = ' ".s:vmode."fg=".s:green     ."'"
+exe "let s:fg_aqua       = ' ".s:vmode."fg=".s:aqua      ."'"
+exe "let s:fg_blue       = ' ".s:vmode."fg=".s:blue      ."'"
+exe "let s:fg_purple     = ' ".s:vmode."fg=".s:purple    ."'"
+exe "let s:fg_window     = ' ".s:vmode."fg=".s:window    ."'"
+exe "let s:fg_darkcolumn = ' ".s:vmode."fg=".s:darkcolumn."'"
+exe "let s:fg_addbg      = ' ".s:vmode."fg=".s:addbg     ."'"
+exe "let s:fg_addfg      = ' ".s:vmode."fg=".s:addfg     ."'"
+exe "let s:fg_changebg   = ' ".s:vmode."fg=".s:changebg  ."'"
+exe "let s:fg_changefg   = ' ".s:vmode."fg=".s:changefg  ."'"
+exe "let s:fg_darkblue   = ' ".s:vmode."fg=".s:darkblue  ."'"
+exe "let s:fg_darkcyan   = ' ".s:vmode."fg=".s:darkcyan  ."'"
+exe "let s:fg_darkred    = ' ".s:vmode."fg=".s:darkred   ."'"
+exe "let s:fg_darkpurple = ' ".s:vmode."fg=".s:darkpurple."'"
+
+exe "let s:fmt_none      = ' ".s:vmode."=NONE".          " term=NONE"        ."'"
+exe "let s:fmt_bold      = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b    ."'"
+exe "let s:fmt_bldi      = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b    ."'"
+exe "let s:fmt_undr      = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u    ."'"
+exe "let s:fmt_undb      = ' ".s:vmode."=NONE".s:u.s:b.  " term=NONE".s:u.s:b."'"
+exe "let s:fmt_undi      = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u    ."'"
+exe "let s:fmt_curl      = ' ".s:vmode."=NONE".s:c.      " term=NONE".s:c    ."'"
+exe "let s:fmt_ital      = ' ".s:vmode."=NONE".s:i.      " term=NONE".s:i    ."'"
+exe "let s:fmt_stnd      = ' ".s:vmode."=NONE".s:s.      " term=NONE".s:s    ."'"
+exe "let s:fmt_revr      = ' ".s:vmode."=NONE".s:r.      " term=NONE".s:r    ."'"
+exe "let s:fmt_revb      = ' ".s:vmode."=NONE".s:r.s:b.  " term=NONE".s:r.s:b."'"
+
+if has("gui_running")
+  exe "let s:sp_none       = ' guisp=".s:none      ."'"
+  exe "let s:sp_foreground = ' guisp=".s:foreground."'"
+  exe "let s:sp_background = ' guisp=".s:background."'"
+  exe "let s:sp_selection  = ' guisp=".s:selection ."'"
+  exe "let s:sp_line       = ' guisp=".s:line      ."'"
+  exe "let s:sp_comment    = ' guisp=".s:comment   ."'"
+  exe "let s:sp_red        = ' guisp=".s:red       ."'"
+  exe "let s:sp_orange     = ' guisp=".s:orange    ."'"
+  exe "let s:sp_yellow     = ' guisp=".s:yellow    ."'"
+  exe "let s:sp_green      = ' guisp=".s:green     ."'"
+  exe "let s:sp_aqua       = ' guisp=".s:aqua      ."'"
+  exe "let s:sp_blue       = ' guisp=".s:blue      ."'"
+  exe "let s:sp_purple     = ' guisp=".s:purple    ."'"
+  exe "let s:sp_window     = ' guisp=".s:window    ."'"
+  exe "let s:sp_addbg      = ' guisp=".s:addbg     ."'"
+  exe "let s:sp_addfg      = ' guisp=".s:addfg     ."'"
+  exe "let s:sp_changebg   = ' guisp=".s:changebg  ."'"
+  exe "let s:sp_changefg   = ' guisp=".s:changefg  ."'"
+  exe "let s:sp_darkblue   = ' guisp=".s:darkblue  ."'"
+  exe "let s:sp_darkcyan   = ' guisp=".s:darkcyan  ."'"
+  exe "let s:sp_darkred    = ' guisp=".s:darkred   ."'"
+  exe "let s:sp_darkpurple = ' guisp=".s:darkpurple."'"
+else
+  let s:sp_none       = ""
+  let s:sp_foreground = ""
+  let s:sp_background = ""
+  let s:sp_selection  = ""
+  let s:sp_line       = ""
+  let s:sp_comment    = ""
+  let s:sp_red        = ""
+  let s:sp_orange     = ""
+  let s:sp_yellow     = ""
+  let s:sp_green      = ""
+  let s:sp_aqua       = ""
+  let s:sp_blue       = ""
+  let s:sp_purple     = ""
+  let s:sp_window     = ""
+  let s:sp_addbg      = ""
+  let s:sp_addfg      = ""
+  let s:sp_changebg   = ""
+  let s:sp_changefg   = ""
+  let s:sp_darkblue   = ""
+  let s:sp_darkcyan   = ""
+  let s:sp_darkred    = ""
+  let s:sp_darkpurple = ""
+endif
+
+"}}}
+" Vim Highlighting: (see :help highlight-groups)"{{{
+" ----------------------------------------------------------------------------
+exe "hi! ColorColumn"   .s:fg_none        .s:bg_line        .s:fmt_none
+"		Conceal"
+"		Cursor"
+"		CursorIM"
+exe "hi! CursorColumn"  .s:fg_none        .s:bg_line        .s:fmt_none
+exe "hi! CursorLine"    .s:fg_none        .s:bg_line        .s:fmt_none
+exe "hi! Directory"     .s:fg_blue        .s:bg_none        .s:fmt_none
+exe "hi! DiffAdd"       .s:fg_addfg       .s:bg_addbg       .s:fmt_none
+exe "hi! DiffChange"    .s:fg_changefg    .s:bg_changebg    .s:fmt_none
+exe "hi! DiffDelete"    .s:fg_background  .s:bg_red         .s:fmt_none
+exe "hi! DiffText"      .s:fg_background  .s:bg_blue        .s:fmt_none
+exe "hi! ErrorMsg"      .s:fg_background  .s:bg_red         .s:fmt_stnd
+exe "hi! VertSplit"     .s:fg_window      .s:bg_none        .s:fmt_none
+exe "hi! Folded"        .s:fg_comment     .s:bg_darkcolumn  .s:fmt_none
+exe "hi! FoldColumn"    .s:fg_none        .s:bg_darkcolumn  .s:fmt_none
+exe "hi! SignColumn"    .s:fg_none        .s:bg_darkcolumn  .s:fmt_none
+"		Incsearch"
+exe "hi! LineNr"        .s:fg_selection   .s:bg_none        .s:fmt_none
+exe "hi! CursorLineNr"  .s:fg_yellow      .s:bg_none        .s:fmt_bold
+exe "hi! MatchParen"    .s:fg_background  .s:bg_changebg    .s:fmt_none
+exe "hi! ModeMsg"       .s:fg_green       .s:bg_none        .s:fmt_none
+exe "hi! MoreMsg"       .s:fg_green       .s:bg_none        .s:fmt_none
+exe "hi! NonText"       .s:fg_selection   .s:bg_none        .s:fmt_none
+exe "hi! Pmenu"         .s:fg_foreground  .s:bg_selection   .s:fmt_none
+exe "hi! PmenuSel"      .s:fg_foreground  .s:bg_selection   .s:fmt_revr
+"		PmenuSbar"
+"		PmenuThumb"
+exe "hi! Question"      .s:fg_green       .s:bg_none        .s:fmt_none
+exe "hi! Search"        .s:fg_background  .s:bg_yellow      .s:fmt_none
+exe "hi! SpecialKey"    .s:fg_selection   .s:bg_none        .s:fmt_none
+exe "hi! SpellCap"      .s:fg_blue        .s:bg_darkblue    .s:fmt_undr
+exe "hi! SpellLocal"    .s:fg_aqua        .s:bg_darkcyan    .s:fmt_undr
+exe "hi! SpellBad"      .s:fg_red         .s:bg_darkred     .s:fmt_undr
+exe "hi! SpellRare"     .s:fg_purple      .s:bg_darkpurple  .s:fmt_undr
+exe "hi! StatusLine"    .s:fg_comment     .s:bg_background  .s:fmt_revr
+exe "hi! StatusLineNC"  .s:fg_window      .s:bg_comment     .s:fmt_revr
+exe "hi! TabLine"       .s:fg_foreground  .s:bg_darkcolumn  .s:fmt_revr
+"		TabLineFill"
+"		TabLineSel"
+exe "hi! Title"         .s:fg_yellow      .s:bg_none        .s:fmt_none
+exe "hi! Visual"        .s:fg_none        .s:bg_selection   .s:fmt_none
+"		VisualNos"
+exe "hi! WarningMsg"    .s:fg_red         .s:bg_none        .s:fmt_none
+"		WildMenu"
+
+" Use Xresources for background colour
+if has('gui_running') || (g:hybrid_use_Xresources != 1 && g:hybrid_use_iTerm_colors != 1)
+  exe "hi! Normal"        .s:fg_foreground  .s:bg_background  .s:fmt_none
+else
+  exe "hi! Normal"        .s:fg_foreground  .s:bg_none        .s:fmt_none
+endif
+
+"}}}
+" Generic Syntax Highlighting: (see :help group-name)"{{{
+" ----------------------------------------------------------------------------
+exe "hi! Comment"         .s:fg_comment     .s:bg_none        .s:fmt_none
+
+exe "hi! Constant"        .s:fg_red         .s:bg_none        .s:fmt_none
+exe "hi! String"          .s:fg_green       .s:bg_none        .s:fmt_none
+"		Character"
+"		Number"
+"		Boolean"
+"		Float"
+
+exe "hi! Identifier"      .s:fg_purple      .s:bg_none        .s:fmt_none
+exe "hi! Function"        .s:fg_yellow      .s:bg_none        .s:fmt_none
+
+exe "hi! Statement"       .s:fg_blue        .s:bg_none        .s:fmt_none
+"		Conditional"
+"		Repeat"
+"		Label"
+exe "hi! Operator"        .s:fg_aqua        .s:bg_none        .s:fmt_none
+"		Keyword"
+"		Exception"
+
+exe "hi! PreProc"         .s:fg_aqua        .s:bg_none        .s:fmt_none
+"		Include"
+"		Define"
+"		Macro"
+"		PreCondit"
+
+exe "hi! Type"            .s:fg_orange      .s:bg_none        .s:fmt_none
+"		StorageClass"
+exe "hi! Structure"       .s:fg_aqua        .s:bg_none        .s:fmt_none
+"		Typedef"
+
+exe "hi! Special"         .s:fg_green       .s:bg_none        .s:fmt_none
+"		SpecialChar"
+"		Tag"
+"		Delimiter"
+"		SpecialComment"
+"		Debug"
+"
+exe "hi! Underlined"      .s:fg_blue        .s:bg_none        .s:fmt_none
+
+exe "hi! Ignore"          .s:fg_none        .s:bg_none        .s:fmt_none
+
+exe "hi! Error"           .s:fg_red         .s:bg_darkred     .s:fmt_undr
+
+exe "hi! Todo"            .s:fg_addfg       .s:bg_none        .s:fmt_none
+
+" Quickfix window highlighting
+exe "hi! qfLineNr"        .s:fg_yellow      .s:bg_none        .s:fmt_none
+"   qfFileName"
+"   qfLineNr"
+"   qfError"
+
+"}}}
+" Diff Syntax Highlighting:"{{{
+" ----------------------------------------------------------------------------
+" Diff
+"		diffOldFile
+"		diffNewFile
+"		diffFile
+"		diffOnly
+"		diffIdentical
+"		diffDiffer
+"		diffBDiffer
+"		diffIsA
+"		diffNoEOL
+"		diffCommon
+hi! link diffRemoved Constant
+"		diffChanged
+hi! link diffAdded Special
+"		diffLine
+"		diffSubname
+"		diffComment
+
+"}}}
+" Legal:"{{{
+" ----------------------------------------------------------------------------
+" Copyright (c) 2011 Ethan Schoonover
+" Copyright (c) 2009-2012 NanoTech
+" Copyright (c) 2012 w0ng
+"
+" Permission is hereby granted, free of charge, to any per‐
+" son obtaining a copy of this software and associated doc‐
+" umentation files (the “Software”), to deal in the Soft‐
+" ware without restriction, including without limitation
+" the rights to use, copy, modify, merge, publish, distrib‐
+" ute, sublicense, and/or sell copies of the Software, and
+" to permit persons to whom the Software is furnished to do
+" so, subject to the following conditions:
+"
+" The above copyright notice and this permission notice
+" shall be included in all copies or substantial portions
+" of the Software.
+"
+" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY
+" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐
+" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐
+" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐
+" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+" THE SOFTWARE.
+
+" }}}
diff --git a/.vimrc b/.vimrc
index a6ce2641..7891eba9 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1,304 +1,53 @@
-" Do not try to behave like vi.
 set nocompatible
 
-" Allow backspace in insert mode to delete past the beginning of the line.
+" Backspace past beginning of line in insert mode.
 set backspace=indent,eol,start
 
-" Keep buffers loaded even when they aren't shown. Allows switching buffers
-" without saving first.
+" Allow switching buffers without saving.
 set hidden
 
-" Keep 50 lines of : command history and search patterns.
-set history=50
+" Show cursor position and incomplete commands, always show status line.
+set ruler showcmd laststatus=2
 
-" Show the cursor position in the bottom right.
-set ruler
+" Search incrementally with smart case sensitivity, highlight all matches.
+set incsearch ignorecase smartcase hlsearch
 
-" Show partial command in the bottom right (i.e. if a command is started but
-" needs a motion, it will be shown).
-set showcmd
+" Automatic indentation and adjust with tab and backspace.
+set autoindent smartindent smarttab
 
-" Jump to search results while typing. Pressing enter actually jumps to the
-" result, pressing escape goes back to the cursor.
-set incsearch
+" Show line numbers, highlight current line and fixed columns.
+set number cursorline colorcolumn=80,100,120
 
-" Perform case-insensitive searching when the search pattern contains only
-" lowercase letters.
-set ignorecase
-set smartcase
-
-" Copy the indent from the previous line when starting a new line.
-" Automatically indent between curly braces and indent keywords.
-set autoindent
-set smartindent
-
-" Show line numbers.
-set number
-
-" Perform spell-checking on strings and comments.
-set spell
-
-" Highlight the 80th, 100th and 120th columns.
-set colorcolumn=80,100,120
-
-" Set the window title with the current file name, status and directory.
+" Set window title.
 set title
 
-" Make file messages shorter:
-"  - a: Shorten all file description messages
-"  - t: Truncate file messages if they are too long
-"  - I: Do not show the intro message when Vim starts
+" Shorten messages and disable intro screen
 set shortmess=atI
 
-" Disable beeping and visual bell (flashing the terminal window).
+" Disable audible bell.
 set visualbell t_vb=
 
-" Highlight the current line.
-set cursorline
-
-" Insert `shiftwidth` spaces at the beginning of a line when tab is pressed,
-" delete `shiftwidth` spaces when backspace is pressed.
-set smarttab
-
-" Highlight all search matches.
-set hlsearch
+" Show hard tabs and trailing whitespace
+set list listchars=tab:»·,trail:·
 
-" Show hard tabs and trailing whitespace.
-set list
-set listchars=tab:»·,trail:·
+" Show hard tabs as 4 side, use 2 space indentation rounded to multiples.
+set tabstop=4 expandtab shiftwidth=2 shiftround
 
-
-" Fold by syntax, start with all folds open.
-set foldmethod=syntax
-set foldlevelstart=99
-
-" Always show the status line.
-set laststatus=2
-
-" Always show one line above or below the cursor.
-set scrolloff=1
-
-" Ctrl-A and Ctrl-X work on hex and single letters
-set nrformats=alpha,hex
-
-" Enable syntax highlighting.
+" Syntax highlighting, filetype indentation rules.
 syntax on
-
-" Enable mouse in terminals
-if has('mouse')
-  set mouse=a
-endif
-
-" Disable spell-checking in terminal Vim.
-if !has('gui_running')
-  set nospell
-endif
-
-" GUI options:
-"  * -m: Disable menu bar
-"  * -r: Disable right scroll bar
-"  * -L: Disable left scroll bar
-"  * -T: Disable toolbar
-"  * +c: Use console dialogs
-set guioptions-=m
-set guioptions-=r
-set guioptions-=L
-set guioptions-=T
-set guioptions+=c
-
-" Use a font.
-set guifont=ProFont:h11
-
-" Jump to the last cursor position when opening a file.
-au BufReadPost * if &filetype !~ '^git\c' && line("'\"") > 0 && line("'\"") <= line("$")
-    \| exe "normal! g`\"" | endif
-
-" Use two-space indents.
-set expandtab
-set shiftwidth=2
-
-" Round to the nearest multiple of `shiftwidth` when indenting.
-set shiftround
-
-" Show hard tabs as 4 characters wide.
-set tabstop=4
-
-
-" Load filetype plugins and indentation rules.
 filetype plugin indent on
 
-" Use 4-space indents in C, C++ and Lua.
-autocmd FileType c,cpp,lua setlocal sw=4
-
-" Hard-wrap text at 72 characters in Markdown.
-autocmd FileType markdown setlocal tw=72
-
-" C/C++ indentation options:
-"  * :0 Align `case` with `switch`
-"  * l1 Indent case bodies with braces to case
-"  * g0 Align `public:` and friends to class
-set cinoptions=:0,l1,g0
-
-" Show tab-complete suggestions when typing in the command-line. List all
-" matches and complete to the longest common string. Ignore output files and
-" backups.
-set wildmenu
-set wildmode=list:longest
-set wildignore=*.o,*.d,*~
-
-" Smarter % matching on HTML tags, if/endif etc.
-runtime macros/matchit.vim
+" Show tab-complete suggestions and complete longest substring.
+set wildmenu wildmode=list:longest
 
-" Do not show whitespace in insert mode.
-autocmd InsertEnter * setlocal nolist
-autocmd InsertLeave * setlocal list
-
-" Set leader to , and remap , to \.
+" Swap , and \ for leader.
 noremap \ ,
-let mapleader = ","
-
-" Swap ' and ` (' is now character-wise and ` is line-wise).
-nnoremap ' `
-nnoremap ` '
+let mapleader=","
 
-" Swap 0 and ^ (0 now moves to the first non-whitespace character).
-nnoremap 0 ^
-nnoremap ^ 0
-
-" Clear search result highlighting.
+" Clear search results.
 nmap <leader>n :nohlsearch<CR>
 
-" Toggle visible whitespace.
-nmap <leader>s :set list!<CR>
-
-" Toggle spell checking.
-nmap <leader>z :set spell!<CR>
-
-" Cut/copy/paste to system clipboard.
-nmap <leader>p "+p
-nmap <leader>P "+P
-nmap <leader>y "+y
-nmap <leader>Y "+Y
-nmap <leader>d "+d
-nmap <leader>D "+D
-
-" Yank to end of line.
-nmap Y y$
-
-" Insert hard tab.
-imap <S-tab> <C-v><tab>
-
-" Toggle relative/absolute line numbers.
-nmap <C-n> :set relativenumber!<CR>
-
-" Common typos.
-command! W :w
-command! Q :q
-
-" Plugins
-
-call plug#begin('~/.vim/plugged')
-
-" Fancy statusline.
-Plug 'bling/vim-airline'
-" Don't show mode in last line.
-set noshowmode
-" Disable silly > separators.
-let g:airline_left_sep = ''
-let g:airline_right_sep = ''
-" Only show diff stats if there are some.
-let g:airline#extensions#hunks#non_zero_only = 1
-" Don't complain about whitespace constantly.
-let g:airline#extensions#whitespace#enabled = 0
-
-" Syntax checking.
-Plug 'scrooloose/syntastic'
-let g:syntastic_check_on_open=1
-let g:syntastic_enable_signs=0
-
-" Git diff signs in margins.
-Plug 'mhinz/vim-signify'
-let g:signify_vcs_list = ['git']
-let g:signify_sign_overwrite = 1
-let g:signify_sign_change = '~'
-
-" Fuzzy matching files/buffers.
-Plug 'kien/ctrlp.vim'
-nmap <leader>b :CtrlPBuffer<CR>
-nmap <leader>e :CtrlP<CR>
-nmap <leader>t :CtrlPBufTag<CR>
-nmap <leader>l :CtrlPLine<CR>
-
-" Git commands.
-Plug 'tpope/vim-fugitive'
-nmap <leader>gs :Gstatus<CR>
-nmap <leader>gc :Gcommit<CR>
-nmap <leader>gp :Git push<CR>
-
-" Alignment of = : , etc.
-Plug 'junegunn/vim-easy-align'
-vnoremap <silent> <Enter> :EasyAlign<Enter>
-
-" Auto-close braces, parens, quotes, etc.
-Plug 'Raimondi/delimitMate'
-let delimitMate_expand_cr = 1
-let delimitMate_expand_space = 1
-let delimitMate_jump_expansion = 1
-
-" Indent guides by alternating background colour. (<leader>ig)
-Plug 'nathanaelkane/vim-indent-guides'
-let g:indent_guides_start_level = 2
-
-" Distraction-free editing
-Plug 'junegunn/goyo.vim'
-Plug 'junegunn/limelight.vim'
-nmap <leader>G :Goyo<CR>
-autocmd User GoyoEnter Limelight
-autocmd User GoyoLeave Limelight!
-
-" Colorschemes.
-Plug 'programble/jellybeans.vim'
-Plug 'programble/vim-hybrid'
-Plug 'morhetz/gruvbox'
-" Show nearest tag in statusline.
-Plug 'majutsushi/tagbar'
-" Scratch buffers.
-Plug 'programble/itchy.vim'
-" Better paste indentation.
-Plug 'sickill/vim-pasta'
-" Commenting.
-Plug 'tpope/vim-commentary'
-" Surround text objects.
-Plug 'tpope/vim-surround'
-" Increment, decrement dates and roman numerals with C-a, C-x.
-Plug 'tpope/vim-speeddating'
-" File-related commands.
-Plug 'tpope/vim-eunuch'
-" Highlight color values with their color in CSS.
-Plug 'ap/vim-css-color'
-" Swap two selections.
-Plug 'tommcdo/vim-exchange'
-
-" Language support.
-Plug 'digitaltoad/vim-jade'
-Plug 'groenewege/vim-less'
-Plug 'kchmck/vim-coffee-script'
-Plug 'pangloss/vim-javascript'
-Plug 'tpope/vim-markdown'
-Plug 'tpope/vim-ragtag'
-
-Plug 'Z1MM32M4N/vim-superman'
-
-Plug 'kshenoy/vim-signature'
-
-call plug#end()
+colorscheme hybrid
 
-set background=dark
-let g:gruvbox_termcolors = 16
-let g:gruvbox_italic = 0
-let g:gruvbox_invert_selection = 0
-let g:gruvbox_sign_column = 'dark0'
-let g:gruvbox_vert_split = 'dark0'
-set fillchars+=vert:│
-colorscheme gruvbox
-let g:airline_theme = 'tomorrow'
+" Set GUI font and disable GUI features.
+set guifont=ProFont:h11 guioptions=c
diff --git a/.vimrc.full b/.vimrc.full
new file mode 100644
index 00000000..a6ce2641
--- /dev/null
+++ b/.vimrc.full
@@ -0,0 +1,304 @@
+" Do not try to behave like vi.
+set nocompatible
+
+" Allow backspace in insert mode to delete past the beginning of the line.
+set backspace=indent,eol,start
+
+" Keep buffers loaded even when they aren't shown. Allows switching buffers
+" without saving first.
+set hidden
+
+" Keep 50 lines of : command history and search patterns.
+set history=50
+
+" Show the cursor position in the bottom right.
+set ruler
+
+" Show partial command in the bottom right (i.e. if a command is started but
+" needs a motion, it will be shown).
+set showcmd
+
+" Jump to search results while typing. Pressing enter actually jumps to the
+" result, pressing escape goes back to the cursor.
+set incsearch
+
+" Perform case-insensitive searching when the search pattern contains only
+" lowercase letters.
+set ignorecase
+set smartcase
+
+" Copy the indent from the previous line when starting a new line.
+" Automatically indent between curly braces and indent keywords.
+set autoindent
+set smartindent
+
+" Show line numbers.
+set number
+
+" Perform spell-checking on strings and comments.
+set spell
+
+" Highlight the 80th, 100th and 120th columns.
+set colorcolumn=80,100,120
+
+" Set the window title with the current file name, status and directory.
+set title
+
+" Make file messages shorter:
+"  - a: Shorten all file description messages
+"  - t: Truncate file messages if they are too long
+"  - I: Do not show the intro message when Vim starts
+set shortmess=atI
+
+" Disable beeping and visual bell (flashing the terminal window).
+set visualbell t_vb=
+
+" Highlight the current line.
+set cursorline
+
+" Insert `shiftwidth` spaces at the beginning of a line when tab is pressed,
+" delete `shiftwidth` spaces when backspace is pressed.
+set smarttab
+
+" Highlight all search matches.
+set hlsearch
+
+" Show hard tabs and trailing whitespace.
+set list
+set listchars=tab:»·,trail:·
+
+
+" Fold by syntax, start with all folds open.
+set foldmethod=syntax
+set foldlevelstart=99
+
+" Always show the status line.
+set laststatus=2
+
+" Always show one line above or below the cursor.
+set scrolloff=1
+
+" Ctrl-A and Ctrl-X work on hex and single letters
+set nrformats=alpha,hex
+
+" Enable syntax highlighting.
+syntax on
+
+" Enable mouse in terminals
+if has('mouse')
+  set mouse=a
+endif
+
+" Disable spell-checking in terminal Vim.
+if !has('gui_running')
+  set nospell
+endif
+
+" GUI options:
+"  * -m: Disable menu bar
+"  * -r: Disable right scroll bar
+"  * -L: Disable left scroll bar
+"  * -T: Disable toolbar
+"  * +c: Use console dialogs
+set guioptions-=m
+set guioptions-=r
+set guioptions-=L
+set guioptions-=T
+set guioptions+=c
+
+" Use a font.
+set guifont=ProFont:h11
+
+" Jump to the last cursor position when opening a file.
+au BufReadPost * if &filetype !~ '^git\c' && line("'\"") > 0 && line("'\"") <= line("$")
+    \| exe "normal! g`\"" | endif
+
+" Use two-space indents.
+set expandtab
+set shiftwidth=2
+
+" Round to the nearest multiple of `shiftwidth` when indenting.
+set shiftround
+
+" Show hard tabs as 4 characters wide.
+set tabstop=4
+
+
+" Load filetype plugins and indentation rules.
+filetype plugin indent on
+
+" Use 4-space indents in C, C++ and Lua.
+autocmd FileType c,cpp,lua setlocal sw=4
+
+" Hard-wrap text at 72 characters in Markdown.
+autocmd FileType markdown setlocal tw=72
+
+" C/C++ indentation options:
+"  * :0 Align `case` with `switch`
+"  * l1 Indent case bodies with braces to case
+"  * g0 Align `public:` and friends to class
+set cinoptions=:0,l1,g0
+
+" Show tab-complete suggestions when typing in the command-line. List all
+" matches and complete to the longest common string. Ignore output files and
+" backups.
+set wildmenu
+set wildmode=list:longest
+set wildignore=*.o,*.d,*~
+
+" Smarter % matching on HTML tags, if/endif etc.
+runtime macros/matchit.vim
+
+" Do not show whitespace in insert mode.
+autocmd InsertEnter * setlocal nolist
+autocmd InsertLeave * setlocal list
+
+" Set leader to , and remap , to \.
+noremap \ ,
+let mapleader = ","
+
+" Swap ' and ` (' is now character-wise and ` is line-wise).
+nnoremap ' `
+nnoremap ` '
+
+" Swap 0 and ^ (0 now moves to the first non-whitespace character).
+nnoremap 0 ^
+nnoremap ^ 0
+
+" Clear search result highlighting.
+nmap <leader>n :nohlsearch<CR>
+
+" Toggle visible whitespace.
+nmap <leader>s :set list!<CR>
+
+" Toggle spell checking.
+nmap <leader>z :set spell!<CR>
+
+" Cut/copy/paste to system clipboard.
+nmap <leader>p "+p
+nmap <leader>P "+P
+nmap <leader>y "+y
+nmap <leader>Y "+Y
+nmap <leader>d "+d
+nmap <leader>D "+D
+
+" Yank to end of line.
+nmap Y y$
+
+" Insert hard tab.
+imap <S-tab> <C-v><tab>
+
+" Toggle relative/absolute line numbers.
+nmap <C-n> :set relativenumber!<CR>
+
+" Common typos.
+command! W :w
+command! Q :q
+
+" Plugins
+
+call plug#begin('~/.vim/plugged')
+
+" Fancy statusline.
+Plug 'bling/vim-airline'
+" Don't show mode in last line.
+set noshowmode
+" Disable silly > separators.
+let g:airline_left_sep = ''
+let g:airline_right_sep = ''
+" Only show diff stats if there are some.
+let g:airline#extensions#hunks#non_zero_only = 1
+" Don't complain about whitespace constantly.
+let g:airline#extensions#whitespace#enabled = 0
+
+" Syntax checking.
+Plug 'scrooloose/syntastic'
+let g:syntastic_check_on_open=1
+let g:syntastic_enable_signs=0
+
+" Git diff signs in margins.
+Plug 'mhinz/vim-signify'
+let g:signify_vcs_list = ['git']
+let g:signify_sign_overwrite = 1
+let g:signify_sign_change = '~'
+
+" Fuzzy matching files/buffers.
+Plug 'kien/ctrlp.vim'
+nmap <leader>b :CtrlPBuffer<CR>
+nmap <leader>e :CtrlP<CR>
+nmap <leader>t :CtrlPBufTag<CR>
+nmap <leader>l :CtrlPLine<CR>
+
+" Git commands.
+Plug 'tpope/vim-fugitive'
+nmap <leader>gs :Gstatus<CR>
+nmap <leader>gc :Gcommit<CR>
+nmap <leader>gp :Git push<CR>
+
+" Alignment of = : , etc.
+Plug 'junegunn/vim-easy-align'
+vnoremap <silent> <Enter> :EasyAlign<Enter>
+
+" Auto-close braces, parens, quotes, etc.
+Plug 'Raimondi/delimitMate'
+let delimitMate_expand_cr = 1
+let delimitMate_expand_space = 1
+let delimitMate_jump_expansion = 1
+
+" Indent guides by alternating background colour. (<leader>ig)
+Plug 'nathanaelkane/vim-indent-guides'
+let g:indent_guides_start_level = 2
+
+" Distraction-free editing
+Plug 'junegunn/goyo.vim'
+Plug 'junegunn/limelight.vim'
+nmap <leader>G :Goyo<CR>
+autocmd User GoyoEnter Limelight
+autocmd User GoyoLeave Limelight!
+
+" Colorschemes.
+Plug 'programble/jellybeans.vim'
+Plug 'programble/vim-hybrid'
+Plug 'morhetz/gruvbox'
+" Show nearest tag in statusline.
+Plug 'majutsushi/tagbar'
+" Scratch buffers.
+Plug 'programble/itchy.vim'
+" Better paste indentation.
+Plug 'sickill/vim-pasta'
+" Commenting.
+Plug 'tpope/vim-commentary'
+" Surround text objects.
+Plug 'tpope/vim-surround'
+" Increment, decrement dates and roman numerals with C-a, C-x.
+Plug 'tpope/vim-speeddating'
+" File-related commands.
+Plug 'tpope/vim-eunuch'
+" Highlight color values with their color in CSS.
+Plug 'ap/vim-css-color'
+" Swap two selections.
+Plug 'tommcdo/vim-exchange'
+
+" Language support.
+Plug 'digitaltoad/vim-jade'
+Plug 'groenewege/vim-less'
+Plug 'kchmck/vim-coffee-script'
+Plug 'pangloss/vim-javascript'
+Plug 'tpope/vim-markdown'
+Plug 'tpope/vim-ragtag'
+
+Plug 'Z1MM32M4N/vim-superman'
+
+Plug 'kshenoy/vim-signature'
+
+call plug#end()
+
+set background=dark
+let g:gruvbox_termcolors = 16
+let g:gruvbox_italic = 0
+let g:gruvbox_invert_selection = 0
+let g:gruvbox_sign_column = 'dark0'
+let g:gruvbox_vert_split = 'dark0'
+set fillchars+=vert:│
+colorscheme gruvbox
+let g:airline_theme = 'tomorrow'