X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=bde35b6f739fe5d2aeafc7dff9427c47a6b1bc11;hb=64309b7f39772977ed42b003b308b2210222e3c6;hp=e8e945e3bc131a82b77c96747ac4787afd2ef673;hpb=1cb1ea3259c5c74ab28ba4cc923a806a1848394c;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index e8e945e..bde35b6 100644 --- a/vimrc +++ b/vimrc @@ -49,8 +49,11 @@ set encoding=utf-8 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 @@ -90,9 +93,9 @@ endif " 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 @@ -102,6 +105,12 @@ if has('eval') 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 @@ -117,6 +126,9 @@ 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 @@ -144,6 +156,10 @@ set formatoptions+=ro " 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 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. @@ -156,8 +172,8 @@ set incsearch " Activate syntax folding. if has('folding') set foldmethod=syntax - " Only use fold column if we have enough space (for example in a (virtual) - " terminals). + " Only use fold column if we have enough space (for example not in a + " (virtual) terminal which has only 80 columns). if &columns > 80 set foldcolumn=2 endif @@ -191,7 +207,7 @@ set hidden 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 @@ -366,7 +382,7 @@ endif " modified by a plugin or other settings. Except for which isn't " affected by mappings. -" Easy way to exit insert mode. +" Easy way to exit insert mode. jk is preferred because it's faster. inoremap jj inoremap jk " Also for command mode, thanks to http://github.com/mitechie/pyvim @@ -425,7 +441,8 @@ 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. -" Only the current buffer is written. +" Only the current buffer is written, thus switching to another buffer works +" too. nnoremap :update:stop " 2 gives more verbose information, use it by default. Thanks to NCS_One @@ -441,6 +458,33 @@ nmap - " (2010-05-16 18:38 CEST) for this idea. nnoremap gb :bnext nnoremap gB :bprevious +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 gb :call NextBuffer() +endif " Fast access to buffers. nnoremap 1 :1buffer