X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=d0e67e8c623be6a09950bbc994ae5915067f9fbd;hb=d64d99e10cfeb62386e5e92620147e7817c01642;hp=612ebd98a3ff65841e8f4abba48eac4655d9d302;hpb=c778ff27e474ceea3dbae546c5c62d28f1b13ebd;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 612ebd9..d0e67e8 100644 --- a/vimrc +++ b/vimrc @@ -4,7 +4,7 @@ " EDITOR SETTINGS " Prevent editing as root as it may cause security problems. Use sudoedit -" instead. Thanks to godlygeek in #vim on Freenode (2009-06-19 22:21). +" instead. Thanks to godlygeek in #vim on Freenode (2009-06-19 22:21 CEST). if $HOME == '/root' || exists('$SUDO_USER') echomsg 'Running as root is forbidden! Use sudoedit.' qall @@ -34,17 +34,26 @@ set runtimepath^=~/.vim,~/.vim/runtime " Don't store swap files in the same directory as the edited file. set directory-=. +" But store them in ~/.tmp if available. +set directory^=~/.tmp " Disable modelines as they may cause security problems. Instead use " securemodelines (Vim script #1876). set nomodeline -" When completing paths first use the longest path then display a list of all -" possible files. -set wildmode=longest,list +" Complete to longest common string (list:longest) and then complete all full +" matches after another (full). Thanks to pbrisbin +" (http://pbrisbin.com:8080/dotfiles/vimrc). +set wildmode=list:longest,full + +" Increase history of executed commands (:). +set history=1000 + +" Increase number of possible undos. +set undolevels=1000 " Use strong encryption if possible, also used for swap/undo files. -if v:version >= 703 +if exists('+cryptmethod') set cryptmethod=blowfish endif @@ -53,6 +62,7 @@ endif " Enable automatic file detection, plugin and indention support. if has('autocmd') + filetype off " necessary for pathogen to force a reload of ftplugins filetype plugin indent on endif @@ -110,7 +120,7 @@ set smartcase " Activate spell checking, use English as default. Don't use spell checking " when diffing. -if v:version >= 700 && has('syntax') && !&diff +if exists('+spell') && has('syntax') && !&diff set spell set spelllang=en_us endif @@ -130,7 +140,7 @@ set background=dark set number " But use as little space as necessary for the numbers column. Thanks to James " Vega (http://git.jamessan.com/?p=etc/vim.git;a=summary). -if v:version >= 700 +if exists('+numberwidth') set numberwidth=1 endif " Display the ruler with current line/file position. If 'statusline' is used @@ -144,7 +154,7 @@ set showcmd set lazyredraw " Visualize the line the cursor is currently in. -if v:version >= 700 +if exists('+cursorline') set cursorline endif @@ -172,6 +182,7 @@ if has('statusline') " on the right set statusline+=%= " right align + set statusline+=0x%-8B\ " current character under cursor as hex set statusline+=%-12.(%l,%c%V%)\ " line number (%l), " column number (%c), " virtual column number if different @@ -184,9 +195,11 @@ endif " Easy way to exit insert mode. inoremap jj +inoremap jk " Also for command mode, thanks to http://github.com/mitechie/pyvim " (2010-10-15). cnoremap jj +cnoremap jk " Disable arrow keys for all modes except command modes. Thanks to James Vega " (http://git.jamessan.com/?p=etc/vim.git;a=summary). @@ -206,16 +219,24 @@ cmap cmap " Use Ctrl-P/Ctrl-N as replacement for / in command mode. Thanks to -" abstrakt and grayw in #vim on Freenode (2010-04-12 21:20). +" abstrakt and grayw in #vim on Freenode (2010-04-12 21:20 CEST). cnoremap cnoremap +" Write before suspending, thanks to deryni in #vim on Freenode (2011-05-09 +" 20:02 CEST). To suspend without saving either unmap it or use :stop. +nnoremap :update:stop + +" 2 gives more verbose information, use it by default. Thanks to NCS_One +" in #vim on Freenode (2011-08-15 00:17 CEST). +nnoremap 2 + " Use to move down a page and - to move up one like in mutt. nnoremap nnoremap - " Go to next and previous buffer. Thanks to elik in #vim on Freenode -" (2010-05-16 18:38) for this idea. +" (2010-05-16 18:38 CEST) for this idea. nnoremap gb :bnext nnoremap gB :bprev @@ -236,7 +257,7 @@ nnoremap O po " Maps to change spell language between English and German and disable spell " checking. -if v:version >= 700 +if exists('+spell') noremap sn :set nospell noremap se :set spell spelllang=en_us noremap sd :set spell spelllang=de_de @@ -303,6 +324,17 @@ if has('gui_macvim') && has('eval') let macvim_skip_cmd_opt_movement = 1 endif +" In case 'hlsearch' is used disable it with . Thanks to frogonwheels and +" vimgor (bot) in #vim on Freenode (2010-03-30 05:58 CEST). +noremap :nohlsearch + + +" ABBREVIATIONS + +" Fix some of my spelling mistakes. +iabbrev relle reelle +iabbrev reele reelle + " SYNTAX SETTINGS @@ -313,26 +345,46 @@ if has('syntax') " 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 " (http://www.derekwyatt.org/vim/the-vimrc-file/). - set synmaxcol=500 + if exists('+synmaxcol') + set synmaxcol=500 + endif " Highlight lines longer than 78 characters. Thanks to Tony Mechelynck " from the Vim mailing list. It can easily be " disabled when necessary with :2match (in Vim >= 700). - if v:version >= 700 + if exists(':2match') 2match Todo /\%>78v./ else match Todo /\%>78v./ endif + if exists('*matchadd') " Highlight TODO, FIXME, CHANGED and XXX in all documents. - if v:version > 701 || (v:version == 701 && has('patch42')) - call matchadd('Todo', '\(TODO\|FIXME\|CHANGED\|XXX\)') + for x in ['TODO', 'FIXME', 'CHANGED', 'XXX'] + call matchadd('Todo', x) + endfor endif + +" Settings for specific filetypes. + + " 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 + endif " PLUGIN SETTINGS +" Use pathogen which allows one 'runtimepath' entry per plugin. This makes +" installing/removing/updating plugins simple. (Used for plugins with more +" than one file.) +if has('eval') && v:version >= 700 + execute 'call pathogen#runtime_append_all_bundles()' +endif + " Settings for the NERD commenter. " Don't create any mappings I don't want to use. if has('eval') @@ -383,7 +435,9 @@ if has('autocmd') " Automatically disable 'paste' mode when leaving insert mode. Thanks to " Raimondi in #vim on Freenode (2010-08-14 23:01 CEST). Very useful as I only " want to paste once and then 'paste' gets automatically unset. - autocmd InsertLeave * set nopaste + if exists('#InsertLeave') + autocmd InsertLeave * set nopaste + endif " AFTER/FTPLUGIN AUTO COMMANDS @@ -400,9 +454,6 @@ if has('autocmd') " the recommendation for git commit messages (http://tpope.net/node/106). autocmd FileType gitcommit let g:secure_modelines_allowed_items = [] | \ setlocal textwidth=72 -" Allow folding in perl. - autocmd FileType perl let perl_fold = 1 | - \ let perl_fold_blocks = 1 " Use the same comment string as for Vim files in Vimperator files. autocmd FileType vimperator setlocal commentstring=\"%s