*vimsuite.txt*  Eine Sammlung von vimscripts für Software Entwickler


|vimsuite.1|   Bestandteile
|vimsuite.2|   Installation
|vimsuite.3|   Einstellungen
|vimsuite.4|   Projekte
|vimsuite.5|   VimSuiteTools

==============================================================================
*vimsuite.1* Bestandteile der VimSuite    *VimSuite* *vimsuite* *Bestandteile*

Die VimSuite besteht aus vimscripts von http://www.vim.org und eigenen 
Scripten von Stefan Liebl. Folgende wichtige Scripts sind enthalten:

|VimSuiteTools|Tools zum Programmieren von Stefan Liebl
|LaTeX| Suite  Tools zum bearbeiten von LaTeX Quelltexten
|crefvim|      Referenz zur Programmiersprache C (Anleitung in|crefvimdoc|)
|visincr|      Inkrementieren von Nummern in Spalten
|cscope_macros|Anwenden der Datenbank für Label in C
|DirDiff|      Vergleichen von kompletten Verzeichnissen
|tComment.txt| Erzeugen von Kommentaren in vielen Sprachen
|SVNstudio|    Arbeiten mit Subversion
|CCM|          Arbeiten mit CM/Synergy
|BMSK|         Makros zum Arbeiten mit BMS-K/BMS-KP Quellcode

==============================================================================
*vimsuite.2* Installation                               *VimSuiteInstallation*

Zunöchst muss die aktuelle Release 7.0 von Vim (http://www.vim.org) in einem 
Pfad ohne Sonderzeichen (auch ohne Leerzeichen) installierts sein. Die 
VimSuite kann in einem beliebigen Verzeichnis abgelegt werden.

Anschließend kann die Datei vimsuite/vimfiles.stefan/_vimrc.example nach 
vim/_vimrc kopiert werden (unter Linux nach ~/.vimrc). In dieser Datei können 
die persönlichen Einstellungen vorgenommen werden, z.B. in dem weitere 
vimrc-files geladen werden. Falls die VimSuite nicht im Verzeichnis vim liegt, 
muss natürlich noch der Pfad angepasst werden.

Bei einem Update der VimSuite sollte die alte VimSuite gelöscht (oder 
verschoben) werden, da sich die Verzeichnis-Struktur ändern kann. Die 
persönlichen Einstellungen in vim/_vimrc werden nicht überschrieben. Es ist 
aber empfehlenswert, die Datei mit der neuen 
vim/vimsuite/vimfiles.stefan/_vimrc.example zu vergleichen.

==============================================================================
*vimsuite.3* Einstellungen                             *VimSuiteEinstellungen*

Einstellungen für die VimSuite können direkt im File _vimrc (bzw. ~/.vimrc) 
gemacht werden. Alternativ kann dort ein eigenes vimrc-File mit|source|geladen 
werden.

							     *g:WA* *Workarea*
Die Variable g:WA sollte auf ein Verzeichnis zeigen, in dem die Projekte der 
VimSuite liegen. Standard ist 'C:/wa'.

                                       *b:GrepFiles* *g:GrepFiles* *GrepFiles*
Die Variable b:GrepFiles kann z.B. in einem|filetype-plugin|gesetzt werden.
g:GrepFiles ist normalerweise *. Für C-Projekte kann die Variable z.B. >
	let b:GrepFiles='*.c *.h'
gesetzt werden.

                                             *b:GrepDir* *g:GrepDir* *GrepDir*
Die Variable b:GrepDir kann z.B. in einem|filetype-plugin|gesetzt werden.
g:GrepDir ist normalerweise das Verzeichnis, in dem vim geöffnet wurde.

Die Funktion zur Suche mit einem externen|grepprg|wird zugunsten der internen 
Variante|:vimgrep|nicht unterstützt.

                                                             *b:commentstring*
Diese Variable wird verwendet, um Code auszukommentieren. Sie sollte in einem 
|filetype-plugin|gesetzt werden.

==============================================================================
*vimsuite.4* Projekte  *Projekt* *Project* *VimSuiteProjekt* *VimSuiteProject*

Ein Projekt bezieht sich nicht auf eine VIM-Session, sondern auf ein 
Entwicklungsprojekt. Im Menü VimSuite->Project werden alle erkannten Projekte 
aufgelistet. Das Projekt kann mit dem Menü oder folgendem Befehl geladen 
werden:

								 *:SetProject*
:SetProject [file] (Tab-Erweiterung funktioniert)        Laden eines Projekts.

Ein Projekt sollte die Datei project.vim enthalten. Nach dieser Datei sucht 
die VimSuite für die Auswahl von Projekten in allen Unterverzeichnissen von 
|g:WA|.  Eine Beispiel für Projekte, die ihre eigene Konfiguration verändern 
können ist in project_example.vim und settings_example.vim zu sehen. Die 
zweite Datei wird über den Make-Befehl 'Make vim-config' erzeugt und von der 
ersten geladen. Die Datei project.vim kann aber auch beliebig anders aussehen.  
Sie wird lediglich bei|SetProject| geladen.

==============================================================================
*vimsuite.5* VimSuiteTools                                     *VimSuiteTools*

Um die Arbeit auf Windows-Systemen zu erleichtern, sind im Ordner tools ein 
paar Programme, die auf diesem System üblicherweise nicht vorhanden sind:
- ctags.exe:  http://ctags.sourceforge.net
- cscope.exe: http://cscope.sourceforge.net
- pythonXX.dll: http://www.python.org
- patch.exe, tee.exe: http://www.mingw.org
- DirDiff.bat: Diese Datei kann in's 'SendTo' Verzeichnis kopiert werden.  
  Anschließend können im Explorer zwei Verzeichnisse markiert und mit
 |DirDiff|verglichen werden.

								*:SessionLoad*
:SessionLoad [Name]                      Laden der Session mit dem Namen Name.

Ruft|:source|Name auf. Falls kein Name angegeben wird, öffnet sich ein 
File-Browse Dialog.

                                                                *:SessionSave*
:SessionSave [Name]                Speichern der Session unter dem Namen Name.

Ruft|:mksession|auf. Falls kein Name angegeben wird, öffnet sich ein 
File-Browse Dialog.

                                                                       *:Grep*
:Grep [pattern]                          Suchen nach pattern in mehreren Files

Unterstützt Regular expressions und findet mehrere Treffer in einer Zeile, die 
mit <CTRL-n> durchlaufen werden können. Gesucht wird in allen|b:GrepFiles|bzw. 
falls nicht vorhanden in|g:GrepFiles|, die unterhalb von|b:GrepDir|bzw. falls 
nicht vorhanden|g:GrepDir|liegen.

                                                             *CTRL-n* *CTRL-N*
Mit <CTRL-n> wird das Command|:cn|ausgeführt. Es ist darauf zu achten, dass 
der nächste eintrag in der|Quickfix|Liste angezeigt wird. Steht die Liste 
also auf dem ersten Eintrag, dieser wurde aber nicht angezeigt (make!, 
vimgrep!) dann wird zum zweiten Eintrag gesprungen.

                                                                    *Reformat*
:Reformat                                        Formatieren eines Quelltextes

Dieser Befehl funktioniert für die meisten Programmiersprachen. In C werden 
hauptsächlich alle Einrückungen korrigiert und alle Tabs zu Spaces 
konvertiert. Der Befehl funktioniert aber auch einigermaßen für kgs-Files.
Es kann auch eine|range|angebeben werden (auch|visual|).

                                    *CommentInOut* *Comment* *CTRL-k* *CTRL-K*
:CommentInOut                         Aus- bzw. Ein-Kommentieren von Quellcode

Die Funktion wird üblicherweise über die Tastenkombination <CTRL-K> 
aufgerufen. Falls der Code auf der aktuellen Zeile nicht auskommentiert wird, 
so wird er auskommentiert. Falls er schon auskommentiert ist, so wird der 
Kommentar entfernt. Anschließend springt der Cursor in die nächste Zeile, so 
dass große Bereiche sehr einfach aus- oder einkommentiert werden können. Als 
Kommentarzeichen wird|b:commentstring|verwendet. Um eine Zeile als 
auskommentiert zu erkennen muss der Kommentar in der ersten Spalte stehen. 
Echte Kommentare können in einer andreren Spalte stehen und werden dann 
doppelt auskommentiert.

                                                              *:MarkLongLines*
:MarkLongLines                                     Hebt zu lange Zeilen hervor
Alle Zeilen, die länger als|textwidth|sind, werden rot markiert.

                                                           *:MarkLongLinesOff*
:MarkLongLinesOff                           Schaltet die Markierung wieder aus

                                                            *:SyntaxShowGroup*
:SyntaxShowGroup                          Zeigt die Syntax|highlight-groups|an

                                                                    *:DiffOff*
:DiffOff                                         Schaltet die Diff-Anzeige aus

                                                                  *:DiffClose*
:DiffClose     Schließt das aktuelle Fenster und schaltet die Diff-Anzeige aus

                                                    *DelAllTrailingWhitespace*
:DelAllTrailingWhitespace         Löscht alle Leerzeichen an allen Zeilenenden

                                                    *DelAllMultipleEmptyLines*
:DelAllMultipleEmptyLines                 Löscht alle mehrfachen leeren Zeilen

                                                     *DelAllMultipleSameLines*
:DelAllMultipleSameLines  
               Löscht alle identischen Zeilen, die direkt hinterenander stehen

                                                              *:InsertCHeader*
:InsertCHeader   Fügt das Template ... ein

==============================================================================
                                                               *cscope_macros*

Folgende Mappings sind definiert:
<C-CR>s   symbol: find all references to the token under cursor
<C-CR>g   global: find global definition(s) of the token under cursor
<C-CR>c   calls:  find all calls to the function name under cursor
<C-CR>t   text:   find all instances of the text under cursor
<C-CR>e   egrep:  egrep search for the word under cursor
<C-CR>f   file:   open the filename under cursor
<C-CR>i   includes: find files that include the current file
<C-CR>d   called: find functions that function under cursor calls

==============================================================================
                                                                     *DirDiff*

Doing the following will generate a diff window.

    :DirDiff <A:Src Directory> <B:Src Directory>
e.g.
    :DirDiff ../something/dir1 /usr/bin/somethingelse/dir2

The following commands can be used inside the diff window:
'Enter','o' - Diff open: open the diff file(s) where your cursor is at
's' - Synchronize the current diff.  You can also select
      a range (through visual) and press 's' to synchronize differences
      across a range.

      - There are 6 Options you can choose when you hit 's':
        1. A -> B
           Copy A to overwrite B
           If A's file actually points to a directory, it'll copy it to B
           recursively.
        2. B -> A
           Copy B to overwrite A
           If B's file actually points to a directory, it'll copy it to A
           recursively.
        3. Always A
           For the rest of the items that you've selected,
           synchronize like (1).
        4. Always B
           For the rest of the items that you've selected,
           synchronize like (2).
        5. Skip
           Skip this diff entry.
        6. Cancel
           Quit the loop and exit.

'u' - Diff update: update the diff window
'x' - Sets the exclude pattern, separated by ','
'i' - Sets the ignore pattern, separated by ','
'a' - Sets additional arguments for diff, eg. -w to ignore white space,
      etc.
'q' - Quit DirDiff
 
The following comamnds can be used in the Vim diff mode
\dg - Diff get: maps to :diffget<CR>
\dp - Diff put: maps to :diffput<CR>
\dj - Diff next: (think j for down) 
\dk - Diff previous: (think k for up)


