" Make sure Vim (and not Vi) settings are used.
set nocompatible
+" Disallow :autocmd, shell and write commands in .vimrc and .exrc files in the
+" current directory. Only used if 'exrc' is enabled (off by default),
+" precaution just in case somebody enables 'exrc'.
+set secure
+
" 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.
set statusline+=:
if has('modify_fname') && v:version >= 700 " some functions need 7.0
set statusline+=%{SRF()} " path to current file
- set statusline+=\ " space after path
else
- set statusline+=%f\ " path to current file in buffer
+ set statusline+=%f " path to current file in buffer
endif
+ set statusline+=\ " space after path
set statusline+=%h " [help] if buffer is help file
set statusline+=%w " [Preview] if buffer is preview buffer
set statusline+=%m " [+] if buffer was modified,
" And fix my typos ...
inoremap JK <Esc>
inoremap Jk <Esc>
+inoremap jK <Esc>
cnoremap JK <C-C>
cnoremap Jk <C-C>
+cnoremap jK <C-C>
" Disable arrow keys for all modes except command modes. Thanks to James Vega
" (http://git.jamessan.com/?p=etc/vim.git;a=summary).
endfunction
nnoremap <silent> <Leader>t :call <SID>UseTabs()<CR>
endif
+" Enable "verbatim" mode. Used to view files with long lines or without syntax
+" coloring. 'list' is not changed, see next mapping.
+nnoremap <silent> <Leader>v :setlocal nowrap nospell synmaxcol=0<CR>
+ \ :2match<CR>
+" Toggle 'list'.
+nnoremap <silent> <Leader>l :set invlist<CR>
" Make last active window the only window. Similar to <C-W> o.
nnoremap <C-W>O <C-W>p<C-W>o
" Activate syntax coloring.
if has('syntax')
- syntax enable
+ " But only if it wasn't already active. Prevents breaking the syntax
+ " coloring when reloading the vimrc. Thanks to johnLate for the idea.
+ if !exists('g:syntax_on')
+ syntax enable
+ endif
" Don't highlight more than 500 columns as I normally don't have that long
" lines and they slow down syntax coloring. Thanks to Derek Wyatt
if exists('*matchadd')
" Highlight some important keywords in all documents.
- let l:todos = ['TODO', 'XXX', 'FIXME',
+ 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
" 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