" Vim main configuration file.
-" Copyright (C) 2008-2013 Simon Ruderich
+" Copyright (C) 2008-2016 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
" precaution just in case somebody enables 'exrc'.
set secure
+" Try to use pipes instead of temporary files. Prevents some auto commands
+" from running for temporary files but also prevents the file's content to be
+" written to disk.
+set noshelltemp
+
" Use UTF-8 for all internal data (buffers, registers, etc.). This doesn't
" affect reading files in different encodings, see 'fileencodings' for that.
set encoding=utf-8
endif
" But store them in ~/.tmp or ~/tmp (already set by default) if available.
set directory^=~/.tmp
+" Never use /tmp which gets cleaned on reboot.
+set directory-=/tmp
" Disable modelines as they may cause security problems. Instead use
" securemodelines (Vim script #1876).
" existing files.
set fileencodings=utf-8,latin1
-" Always use unix line-endings for new files.
+" Always use unix line-endings for new files. DOS line endings in existing
+" files are recognized.
set fileformats=unix,dos
" Wrap text after 78 characters.
if exists('+numberwidth')
set numberwidth=1
endif
-" Display the ruler with current line/file position. If 'statusline' is used
+" Display the ruler with current line/file position. If 'statusline' is used,
" then this only affects <C-G>.
set ruler
" Display partial commands in the status line.
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
+" Use :tjump to lookup tags (instead of :tag) which lists all available tags
+" if there's more than one match. This is really helpful in larger projects
+" where tags may occur multiple times.
+nnoremap <C-]> g<C-]>
+
if has('eval')
" Don't move the cursor to the first column for certain scroll commands (<C-F,
" <C-B>, <C-D>, <C-U>). Thanks to jamessan in #vim on Freenode (2011-08-31
" Highlight some important keywords in all documents.
let l:todos = ['TODO', 'XXX', 'FIXME', 'NOTE',
\ 'CHANGED', 'REMOVED', 'DELETED']
- " Compatibility fix for Vim 6.4 which can't handle for in function
+ " Compatibility fix for Vim 6.4 which can't parse for in functions
" (without function it's ignored).
execute ' for l:x in l:todos'
\ '| call matchadd("Todo", l:x)'
" C
let g:c_no_if0_fold = 1 " fix weird double fold in #if0 in recent versions
- " Haskell.
+ " Haskell
let g:hs_highlight_delimiters = 1
let g:hs_highlight_boolean = 1
let g:hs_highlight_types = 1
let g:hs_highlight_more_types = 1
- " Java.
+ " Java
let g:java_highlight_java_lang_ids = 1 " color java.lang.* identifiers
- " Perl.
+ " Perl
let g:perl_fold = 1
let g:perl_fold_blocks = 1
let g:perl_nofold_packages = 1
let g:perl_include_pod = 1 " syntax coloring for PODs
- " PHP.
+ " PHP
let g:php_folding = 3 " fold functions
let g:php_short_tags = 0 " no short tags (<? .. ?>), not always usable
let g:php_sql_query = 1 " highlight SQL queries in strings
- " Python.
+ " Python
let g:python_highlight_all = 1
- " Shell.
+ " 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.
+ " Vim
let g:vimsyn_embed = 0 " don't highlight embedded languages
let g:vimsyn_folding = 'af' " folding for autogroups (a) and functions (f)
- " XML.
+ " XML
let g:xml_syntax_folding = 1
endif
\ 'sw', 'sts', 'noet']
endif
+" Settings for gnupg.
+ " Don't use temporary files for sensitive data.
+ let g:GPGUsePipes = 1
+
" Settings for the NERD commenter.
" Don't create any mappings I don't want to use.
let g:NERDCreateDefaultMappings = 0
" AUTO COMMANDS
" Use a custom auto group to prevent problems when the vimrc files is sourced
-" twice.
+" multiple times.
if has('autocmd')
augroup vimrc
autocmd FileType gitcommit let g:secure_modelines_allowed_items = [] |
\ setlocal textwidth=72
" Fix 'include' setting for shell files to recognize '.' and 'source'
-" commands. Use &l:include instead of setlocal which requires excessive
-" escaping of \.
+" commands.
autocmd FileType sh let &l:include = '^\s*\(\.\|source\)\s\+'
" Use the same comment string as for Vim files in Vimperator files.
autocmd FileType vimperator setlocal commentstring=\"%s