]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
Use setup.sh instead of Makefile for setup process.
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index b3a506dd7566768cb61f5eaa178696b503983af3..a3163f81e1275616f5174ee3096aac05c37ffb8d 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -4,10 +4,13 @@
 " Make sure Vim (and not Vi) settings are enabled.
 set nocompatible
 
-" Enable automatic filedection, plugin and indention load.
+
+" EDIT SETTINGS
+
+" Enable automatic file detection, plugin and indention.
 filetype plugin indent on
 
-" Use utf-8 file encoding for all files.
+" Use UTF-8 file encoding for all files.
 set fileencodings=utf-8
 
 " Wrap text after 78 characters.
@@ -25,53 +28,116 @@ set tabstop=8
 " Enable auto indention.
 set autoindent
 
-" Activate lines display.
-set number
-" Display the ruler.
-set ruler
+" When joining lines only add one space after a sentence.
+set nojoinspaces
+
+" Allow backspacing over autoindent and line breaks.
+set backspace=indent,eol
+
+" Start a comment when hitting enter after a commented line (r) and when using
+" o or O around a commented line (o).
+set formatoptions+=ro
+" Don't break a line if was already longer then 'textwidth' when insert mode
+" started.
+set formatoptions+=l
+
+" Allow virtual editing (cursor can be positioned anywhere, even when there is
+" no character) in visual block mode.
+set virtualedit=block
+
+" Already display matches while typing the search command. This makes spotting
+" errors easily.
+set incsearch
 
 " Activate syntax folding.
 set foldmethod=syntax
 set foldcolumn=2
 set foldlevel=99 " no folding at default
 
-" Use smartcase mode when searching; only check for case if the searched word
-" contains a capital character.
+" Only check for case if the searched word contains a capital character.
 set ignorecase
 set smartcase
 
 " Activate spell checking, use English as default.
-set spell
-set spelllang=en_us
+if v:version >= 700
+    set spell
+    set spelllang=en_us
+endif
 
-" When joining lines only add one space after a sentence.
-set nojoinspaces
 
-" Allow backspacing over autoindent, line breaks and insert mode starts.
-set backspace=indent,eol,start
+" DISPLAY SETTINGS
+
+" Use a dark background.
+set background=dark
+
+" Activate lines display.
+set number
+" Display the ruler with current line/file position.
+set ruler
+" Display partial commands in the status line.
+set showcmd
+
+" Visualize the line the cursor is currently in.
+if v:version >= 700
+    set cursorline
+endif
+
+" Display tabs as "^I" and trailing space as "-".
+set list
+set listchars=trail:-
 
-" Don't use any modelines.
-set nomodeline
+
+" EDITOR SETTINGS
 
 " When completing paths first use the longest path then display a list of all
 " possible files.
 set wildmode=longest,list
 
-" Visualize the line the cursor is currently in.
-set cursorline
+" Increase number of tabs which can be opened with the -p option.
+if v:version >= 700
+    set tabpagemax=50
+endif
 
-" Use a dark background.
-set background=dark
 
+" MAPPINGS (except for plugins, see PLUGIN SETTINGS below)
 
 " Use "," as my mapleader.
 let mapleader = ","
 let maplocalleader = ","
 
+" Use <space> to move down a page and - to move up one like in mutt.
+nnoremap <Space> <C-f>
+nnoremap - <C-b>
+
+" Maps to change spell language between English and German.
+map <Leader>se :set spelllang=en_us<CR>
+map <Leader>sd :set spelllang=de_de<CR>
+
 " I often type "W" instead of "w" when trying to save a file. Fix my mistake.
-cmap W w
-cmap Wq wq
+" Thanks to Tony Mechelynck <antoine.mechelynck@gmail.com> from the Vim
+" mailing list for the commands.
+if v:version < 700
+    cnoreabbrev W w
+    cnoreabbrev Wq wq
+else
+    cnoreabbrev <expr> W
+        \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'w' : 'W')
+    cnoreabbrev <expr> Wq
+        \ ((getcmdtype() == ':' && getcmdpos() <= 3) ? 'wq' : 'Wq')
+endif
+" Also fix my typo with "Q".
+if v:version < 700
+    cnoreabbrev Q q
+else
+    cnoreabbrev <expr> Q
+        \ ((getcmdtype() == ':' && getcmdpos() <= 2) ? 'q' : 'Q')
+endif
 
+" Make sure xa0 (alt + space) is automatically changed to a normal whitespace
+" if pressed accidentally while in insert mode (happens on Mac sometimes).
+if has("mac")
+    imap <Char-0xa0> <Space>
+endif
 
 " Disable Apple style movements in MacVim.
 if has("gui_macvim")
@@ -79,10 +145,41 @@ if has("gui_macvim")
 endif
 
 
+" SYNTAX SETTINGS
+
 " Activate syntax coloring.
-syntax enable
+if has("syntax")
+    syntax enable
+
+" Highlight text longer then 78 characters. Thanks to Tony Mechelynck
+" <antoine.mechelynck@gmail.com> from the Vim mailing list.
+    if v:version >= 700
+        2match Todo /\%>78v./
+    else
+        match Todo /\%>78v./
+    endif
+endif
+
+
+" PLUGIN SETTINGS
 
+" Settings for the NERD commenter.
+" Don't create any mappings I don't want to use.
+let NERDCreateDefaultMappings = 0
+" Map toggle comment.
+map <Leader><Leader> <plug>NERDCommenterToggle
 
-" Automatically save and the load the file state (stored in ~/.vim/view).
-autocmd BufWrite * mkview
-autocmd BufRead  * loadview
+
+" AUTO COMMANDS
+
+" Use a custom auto group to prevent problems when the vimrc files is sourced
+" twice.
+if has("autocmd")
+    augroup vimrc
+    autocmd!
+
+" Use diff filetype for mercurial patches in patch queue.
+        autocmd BufReadPost */.hg/patches/* set filetype=diff
+
+    augroup END
+endif