diff --git a/vimfiles.stefan/doc/tags b/vimfiles.stefan/doc/tags
index 5144864..a0b94ef 100644
--- a/vimfiles.stefan/doc/tags
+++ b/vimfiles.stefan/doc/tags
@@ -60,8 +60,10 @@ DelAllMultipleEmptyLines vimsuite.txt /*DelAllMultipleEmptyLines*
DelAllMultipleSameLines vimsuite.txt /*DelAllMultipleSameLines*
DelAllTrailingWhitespace vimsuite.txt /*DelAllTrailingWhitespace*
DirDiff vimsuite.txt /*DirDiff*
+GVimMerge vimsuite.txt /*GVimMerge*
GrepDir vimsuite.txt /*GrepDir*
GrepFiles vimsuite.txt /*GrepFiles*
+Merge vimsuite.txt /*Merge*
Project vimsuite.txt /*Project*
Projekt vimsuite.txt /*Projekt*
Reformat vimsuite.txt /*Reformat*
diff --git a/vimfiles.stefan/doc/vimsuite.txt b/vimfiles.stefan/doc/vimsuite.txt
index bfae5f6..af23025 100644
--- a/vimfiles.stefan/doc/vimsuite.txt
+++ b/vimfiles.stefan/doc/vimsuite.txt
@@ -179,6 +179,14 @@ Alle Zeilen, die l
*:InsertCHeader*
:InsertCHeader Fügt das Template ... ein
+ *GVimMerge* *Merge*
+gvimmerge Tool zur Unterstützung beim mergen
+
+Um GVim als Tool zum Mergen für eine Versionsverwaltung zu verwenden kann
+dieser dort als Merge-Tool eingetragen werden. Der Eintrag sollte
+folgendermaßen ausshen:
+.../vimsuite/vimfiles.stefan/tools/gvimmerge.bat
+
==============================================================================
*cscope_macros*
diff --git a/vimfiles.stefan/tools/gvimmerge.bat b/vimfiles.stefan/tools/gvimmerge.bat
new file mode 100644
index 0000000..fe439e6
--- /dev/null
+++ b/vimfiles.stefan/tools/gvimmerge.bat
@@ -0,0 +1,17 @@
+@echo off
+setlocal
+set vimdir=%~dp0..\..\..
+set vimprg=%vimdir%\vim74\gvim.exe
+set vimscript=%~dp0gvimmerge.vim
+set base=%1
+set mine=%2
+set theirs=%3
+set merged=%4
+
+if not exist %vimprg% (
+ echo gvim.exe nicht gefunden
+)
+
+set cmd=%vimprg% -f -R %base% %mine% %theirs% %merged% -S %vimscript%
+echo %cmd%
+%cmd%
diff --git a/vimfiles.stefan/tools/gvimmerge.vim b/vimfiles.stefan/tools/gvimmerge.vim
new file mode 100644
index 0000000..40d45c1
--- /dev/null
+++ b/vimfiles.stefan/tools/gvimmerge.vim
@@ -0,0 +1,31 @@
+function s:OpenDiffTab(left, right)
+ tabnew
+ execute 'buffer' a:left
+ diffthis
+ execute 'rightbelow vertical sbuffer' a:right
+ diffthis
+endfunction
+
+function s:FixLineendings()
+ if !exists('b:reload_dos') && !&binary && &ff=='unix' && (0 < search('\r$', 'nc'))
+ edit ++ff=dos
+ echom 'fixed lineendings'
+ let b:reload_dos = 1
+ endif
+endfunction
+
+function s:OpenMergeTabs()
+ set columns=200
+ call s:OpenDiffTab(1, 4)
+ call s:FixLineendings()
+ setlocal noreadonly modifiable
+ call s:OpenDiffTab(2, 4)
+ call s:OpenDiffTab(3, 4)
+ call s:OpenDiffTab(1, 2)
+ call s:OpenDiffTab(1, 3)
+ call s:OpenDiffTab(2, 3)
+ tabfirst
+ tabclose
+endfunction
+
+call s:OpenMergeTabs()
diff --git a/vimfiles.stefan/vimrc b/vimfiles.stefan/vimrc
index 3fe7105..6be20da 100644
--- a/vimfiles.stefan/vimrc
+++ b/vimfiles.stefan/vimrc
@@ -156,7 +156,11 @@ nnoremap gb :call GotoLastFile()
" -----------
set sessionoptions=blank,buffers,curdir,folds,help,resize,tabpages,winsize
" open window size
-autocmd GUIEnter * winsize 100 60
+if &diff
+ autocmd GUIEnter * set lines=60 columns=200
+else
+ autocmd GUIEnter * set lines=60 columns=100
+endif
" read and write files automatically
set autoread
set autowrite