set runtimepath-=~/.vim
set runtimepath^=~/.vim,~/.vim/runtime
-" Don't store swap files in the same directory as the edited file.
-set directory-=.
+" Don't store swap files in the same directory as the edited file. But only if
+" we have a "safe" writable directory available.
+if filewritable('~/.tmp') == 2 || filewritable('~/tmp') == 2
+ set directory-=.
+endif
" But store them in ~/.tmp or ~/tmp (already set by default) if available.
set directory^=~/.tmp
" matches after another (full). Thanks to pbrisbin
" (http://pbrisbin.com:8080/dotfiles/vimrc).
set wildmode=list:longest,full
+" Ignore case when completing files/directories.
+if exists('+wildignorecase')
+ set wildignorecase
+endif
+
+" Show completion menu even if only one entry matches.
+if exists('+completeopt')
+ set completeopt+=menuone
+endif
" Increase history of executed commands (:).
set history=1000
" HELPER FUNCTIONS
+if has('eval')
" Check if the given syntax group is available. Thanks to bairui in #vim on
" Freenode (2012-02-19 01:15 CET) for the try/catch silent highlight idea.
-if has('eval')
function! s:HasSyntaxGroup(group)
try
execute 'silent highlight ' . a:group
endtry
return 1
endfunction
+
+" Check if the given Vim version and patch is available.
+ function! s:HasVersionAndPatch(version, patch)
+ return v:version > a:version
+ \ || (v:version == a:version && has('patch' . a:patch))
+ endfunction
endif
" existing files.
set fileencodings=utf-8,latin1
+" Always use unix line-endings for new files.
+set fileformats=unix,dos
+
" Wrap text after 78 characters.
set textwidth=78
" Don't break a line if was already longer then 'textwidth' when insert mode
" started.
set formatoptions+=l
+" Remove comment leader when joining lines where it makes sense.
+if <SID>HasVersionAndPatch(703, 541)
+ set formatoptions+=j
+endif
" Allow virtual editing (cursor can be positioned anywhere, even when there is
" no character) in visual block mode.
set background=dark
" Use my color scheme if 256 colors are available.
-if &t_Co == 256
+if &t_Co == 256 || has('gui_running')
colorscheme simon
endif
set statusline+=%02n " buffer number
set statusline+=%{StatuslineBufferCount()} " highest buffer number
set statusline+=:
- if has('modify_fname')
+ if has('modify_fname') && v:version >= 700 " some functions need 7.0
set statusline+=%{StatuslineRelativeFilename()} " path to current file
set statusline+=\ " space after path
else
" (2010-05-16 18:38 CEST) for this idea.
nnoremap <silent> gb :bnext<CR>
nnoremap <silent> gB :bprevious<CR>
+if has('eval')
+ " But when starting again at the first buffer, print a warning which
+ " reminds me that I've already seen that buffer.
+ function! s:NextBuffer()
+ " Are we currently on the last buffer and moving to the first?
+ let l:last_buffer = 0
+ if bufnr('%') == bufnr('$') && bufnr('$') > 1
+ let l:last_buffer = 1
+ endif
+
+ " Go to the next buffer.
+ if !l:last_buffer
+ bnext
+
+ " Go to the first buffer, silent is necessary or the following message
+ " won't be displayed because it's overwritten by the status message
+ " displayed when entering a buffer.
+ else
+ silent bnext
+
+ echohl WarningMsg
+ echo 'Starting again at first buffer.'
+ echohl None
+ endif
+ endfunction
+ nnoremap <silent> gb :call <SID>NextBuffer()<CR>
+endif
" Fast access to buffers.
nnoremap <silent> <Leader>1 :1buffer<CR>
" installing/removing/updating plugins simple. (Used for plugins with more
" than one file.) Ignore errors in case pathogen is not installed.
if v:version >= 700
- silent! execute 'call pathogen#runtime_append_all_bundles()'
+ silent! execute 'call pathogen#infect()'
endif
" Settings for securemodelines.
" Only allow items I need (also includes spl which is not enabled by
" default).
- let g:secure_modelines_allowed_items = ['ft', 'spl', 'fdm',
- \ 'sw', 'sts', 'noet']
+ if v:version >= 700 " need lists
+ let g:secure_modelines_allowed_items = ['ft', 'spl', 'fdm',
+ \ 'sw', 'sts', 'noet']
+ endif
" Settings for the NERD commenter.
" Don't create any mappings I don't want to use.