" Vim main configuration file.
-" Copyright (C) 2011-2012 Simon Ruderich
+" Copyright (C) 2008-2012 Simon Ruderich
"
" This file is free software: you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" Don't store swap files in the same directory as the edited file.
set directory-=.
-" But store them in ~/.tmp if available.
+" But store them in ~/.tmp or ~/tmp (already set by default) if available.
set directory^=~/.tmp
" Disable modelines as they may cause security problems. Instead use
" Activate syntax folding.
if has('folding')
set foldmethod=syntax
- set foldcolumn=2
+ " Only use fold column if we have enough space (for example in a (virtual)
+ " terminals).
+ if &columns > 80
+ set foldcolumn=2
+ endif
set foldlevel=99 " no closed folds at default, 'foldenable' would disable
" folding which is not what I want
endif
-" Only check for case if the searched word contains a capital character.
+" Only check case if the searched word contains a capital character.
set ignorecase
set smartcase
" Activate spell checking, use English as default.
if exists('+spell') && has('syntax')
- " But not when diffing as spell checking is distracting in this case.
+ " But not when diffing because spell checking is distracting in this case.
if !&diff
set spell
endif
endif
" Allow buffers with changes to be hidden. Very important for effective
-" editing with multiple buffers.
+" editing with multiple buffers. Prevents the "E37: No write since last change
+" (add ! to override)" warning.
set hidden
" Display line numbers.
set number
-" But use as little space as necessary for the numbers column. Thanks to James
+" But use as little space as possible for the numbers column. Thanks to James
" Vega (http://git.jamessan.com/?p=etc/vim.git;a=summary).
if exists('+numberwidth')
set numberwidth=1
" remove the highlighting until the next search.
set hlsearch
-" Display tabs, trailing space, non breakable spaces and long lines (when
-" wrapping is disabled).
+" Display some special characters.
set list
-set listchars=trail:-,extends:>
+set listchars=
+" Display tabs as ">--------".
+set listchars+=tab:>-
+" Display trailing whitespace as "-".
+set listchars+=trail:-
+" Display markers for long lines when wrapping is disabled.
+set listchars+=extends:>,precedes:<
+" Display non-breakable space as "!".
if v:version >= 700
set listchars+=nbsp:!
endif
" Write before suspending, thanks to deryni in #vim on Freenode (2011-05-09
" 20:02 CEST). To suspend without saving either unmap this or use :stop<CR>.
+" Only the current buffer is written.
nnoremap <silent> <C-Z> :update<CR>:stop<CR>
" 2<C-G> gives more verbose information, use it by default. Thanks to NCS_One
" Highlight lines longer than 78 characters. Thanks to Tony Mechelynck
" <antoine.mechelynck@gmail.com> from the Vim mailing list. It can easily be
" disabled when necessary with :2match (in Vim >= 700).
- if exists(':2match')
+ if !&diff && exists(':2match')
2match Todo /\%>78v./
- else
+ elseif !&diff
match Todo /\%>78v./
endif
\ '| call matchadd("Todo", l:x)'
\ '| endfor'
-" Highlight unicode whitespace which is no normal whitespace (0x20).
+" Highlight Unicode whitespace which is no normal whitespace (0x20).
let l:spaces = ['00a0', '1680', '180e', '2000', '2001', '2002',
\ '2003', '2004', '2005', '2006', '2007', '2008',
\ '2009', '200a', '200b', '200c', '200d', '202f',
\ '205f', '2060', '3000', 'feff']
- " Compatibility fix for Vim 6.4.
+ " Compatibility fix for Vim 6.4. Escape \ inside the " string or
+ " it won't work!
execute ' for l:x in l:spaces'
- \ '| call matchadd("Error", "\%u" . l:x)'
+ \ '| call matchadd("Error", "\\%u" . l:x)'
\ '| endfor'
endif
endfunction
let g:perl_include_pod = 1 " syntax coloring for PODs
" Python.
let g:python_highlight_all = 1
+ " Shell.
+ let g:sh_noisk = 1 " don't add . to 'iskeyword'
+ let g:sh_is_posix = 1 " POSIX shell (e.g. dash) is compatible enough
+ let g:sh_fold_enabled = 7 " functions (1), heredoc (2) and if/do/for (4)
" Vim.
let g:vimsyn_embed = 0 " don't highlight embedded languages
let g:vimsyn_folding = 'af' " folding for autogroups (a) and functions (f)
if has('eval')
" Use pathogen which allows one 'runtimepath' entry per plugin. This makes
" installing/removing/updating plugins simple. (Used for plugins with more
-" than one file.)
+" than one file.) Ignore errors in case pathogen is not installed.
if v:version >= 700
- execute 'call pathogen#runtime_append_all_bundles()'
+ silent! execute 'call pathogen#runtime_append_all_bundles()'
endif
" Settings for the NERD commenter.
autocmd QuickFixCmdPre * write
endif
+" Don't ignore case while in insert mode, but ignore case in all other modes.
+" This causes <C-N>/<C-P> to honor the case and thus only complete matching
+" capitalization. But while searching (/) 'ignorecase' is used.
+" InsertEnter/InsertLeave doesn't exist in older Vims.
+ if exists('##InsertEnter') && exists('##InsertLeave')
+ autocmd InsertEnter * set noignorecase
+ autocmd InsertLeave * set ignorecase
+ endif
+
" AFTER/FTPLUGIN AUTO COMMANDS
" Disable spell checking for files which don't need it.