Christian's Vim Page For Programmers Vim - I love it

Vim als IDE

Vim bietet bereits von sich aus vieles, was eine gute IDE (Integrated Development Environment) ausmacht. Aber eben nicht alles, so fehlen z.B. eine Projektverwaltung, eine Software-Versions-Kontrolle oder ein integrierter Debugger. Durch externe Programme und durch Plugins (Skripten) können fehlende Features, die das Programmiererherz höher schlagen lassen, jedoch nachinstalliert werden.

An dieser Stelle soll ein grober Überblick darüber gegeben werden, was Vim in Hinblick auf eine IDE bereits kann und welche Skripten es gibt, um aus Vim eine "richtige" und den eigenen Ansprüchen entsprechende IDE zu machen.

Was Vim bietet down

Hier ist eine Liste der interessantesten Features, die Vim für Programmierer bereitstellt. In Klammern steht, wo in der Vim-Dokumentation weitere Informationen zur jeweiligen Funktionalität gefunden werden können.

  • Folding (:help folding)
  • Syntax-Highlighting (:help syntax)
  • automatisches Einrücken, Indenting ( :help indent.txt )
  • erweiterte Suchfunktionen
    • Suche in aktueller Datei einschließlich der inkludierten Dateien (:help include-search)
    • Suche nach lokalen und globalen Identifiern (:help gd; :help gD)
    • Suche über mehrere Dateien hinweg (:help grep; :help quickfix)
  • dateiübergreifendes Ersetzen (:help argdo; Kapitel "Repeating - Making a change in many files")
  • Schnittstelle zum Compiler (:help make; :help quickfix)
  • Sessionsmanagment (:help views-sessions)
  • Schnittstelle zu ctags und cscope (:help ctags; :help cscope)
  • Funktionsparameter anzeigen ( :help preview-window)
  • Navigieren im Source-Code (:help tags; :help various-motions)
  • Undo/Redo (:help undo-commands)
  • Macros (:help repeating)
  • Editieren/Anzeigen mehrerer Dateien gleichzeitig (:help windows)
Weitere Infos bieten die Kapitel "Moving through programs" und "Editing programs" in der Vim-Dokumentation.
Tools up down

Die beiden Tools ctags und grep sind ein absolutes Muß. Sie gibt es für alle gängigen Plattformen.

Tools
ctags Findet, wo etwas definiert/declariert ist.
Plattformen: Linux, Windows, und viele andere
Quelle: Es gibt viel verschiedene Implementierungen. Eine der leistungsfähigsten ist Exuberant Ctags, hier geht es zur Homepage
cscope Findet im Gegensatz zu ctags nicht nur nur wo etwas definiert/declariert ist, sondern auch, wo etwas verwendet wird.
Plattformen: Unixe + Windows (cygwin)
Quelle: zur Homepage
grep Sehr mächtiges Tool zur Suche in Textdateien.
Plattformen: Linux, Windows, und viele andere
Quelle: Es gibt viel verschiedene Implementierungen. Eine der verbreitesten ist die GNU-Version.
GNU grep für Linux: zur Homepage
GNU grep für Windows: zur Homepage
Skripten up
Projektverwaltung
project Stellt eine Projektverwaltung zur Verfügung. Das Projekt kann hierarchisch - unabhängig von der Verzeichnisstruktur - gegliedert werden. Es können außerdem mehrere Projekte gleichzeitig verwaltet werden. Der Wechsel zwischen verschiedenen Projekten ist so sehr schnell möglich.
Autor: Aric Blumer
Quelle: Vim Online
winmanager

Bietet neben den Fenstern, in denen der eigentliche Source-Code bearbeitet wird, zwei weitere Fenster an. Einen File-Explorer und einen Puffer-Explorer. Der Puffer-Explorer wird automatisch beim Laden/Schließen von Dateien upgedated. Über den File-Explorer können z.B. weitere Dateien eines Projekts geladen werden.

Man kann winmanager als eine Art Projektverwaltung verstehen, allerdings läßt sich das Projekt nicht wie bei project hierarchisch gliedern sondern nur auf Dateiebene. Der Nachteil: man sieht nur ein Verzeichnis gleichzeitig und alle Dateien, die sich in diesem Verzeichnis befinden, egal ob sie Teil des Projekts sind oder nicht.

Ich persönlich bevorzuge inzwischen die Kombination project und bufexplorer gegenüber winmanager.

Autor: Srinath Avadhanula
Quelle: Vim Online
Integration Debugger
gdbvim Integriert den gdb in Vim.
Benötigt Perl.
Autor: Tomas Zellerin
Quelle: Vim Online
idevim Integriert den gdb in Vim.
Benötigt externes Programm, um den gdb anzusteuern.
Autor: K T Lighish
Quelle: Vim Online
vimDebug Integriert folgende Debugger in Vim: gdb, perl debugger, pdb, jdb
Benötigt Perl.
Autor: Eric Johnson
Quelle: Vim Online
Source-Code-Verwaltung
cvscommand Ermöglicht das Steuern der Source-Code-Verwaltung cvs von Vim aus.
Autor: Robert Hiestand
Quelle: Vim Online
cvsmenu Ermöglicht das Steuern der Source-Code-Verwaltung cvs von Vim aus.
Autor: Thorsten Maerz
Quelle: Vim Online
Puffernavigation
bufexplorer Das Skript listet die geöffneten Puffer auf und ermöglicht den komfortablen Wechsel zwischen verschiedenen Puffern.
Autor: Jeff Lanzarotta
Quelle: Vim Online
minibufexpl Alle Puffer werden in einem ständig geöffneten Fenster kompakt dargestellt.
Autor: Bindu Wavell
Quelle: Vim Online
selectbuf Pufferexplorer, der in vielen Belangen konfiguriert werden kann.
Autor: Hari Krishna Dara
Quelle: Vim Online
Source-Code-Browser, Tagnavigation
ctags Listet die Dateien des aktuellen Verzeichnisses auf. Für diese Dateien kann eine nach Variablen, Klassen, Strukturen, Funktionen usw. gruppierte Tag-Liste erstellt werden.
Benötigt exuberant ctags
Autor: Gary Johnson
Quelle: Vim Online
tagexplorer Listet die Dateien des aktuellen Verzeichnisses auf. Für diese Dateien kann eine nach Variablen, Klassen, Strukturen, Funktionen usw. gruppierte Tag-Liste erstellt werden.
Benötigt exuberant ctags
Autor: Yegappan Lakshmanan
Quelle: Vim Online
tagmenu Die Definitionen einer Source-Code-Datei werden gruppiert nach Variablen, Klassen, Strukturen, Funktionen, Makros usw. in einem Menü aufgelistet.
Benötigt exuberant ctags
Autor: Yegappan Lakshmanan
Quelle: Vim Online
taglist Listet die Definitionen einer Source-Code-Datei gruppiert nach Variablen, Klassen, Strukturen, Funktionen, Makros usw. in einem separaten Fenster auf. Bietet darüber hinaus noch weitere Features wie z.B. Anzeige des Prototyps, automatisches Updaten der Tag-Liste beim Öffnen neuer Dateien...
Benötigt exuberant ctags version 5.0 oder neuer
Autor: Yegappan Lakshmanan
Quelle: Vim Online
Sonstiges
a Ermöglicht schnellen Wechsel zwischen Code-Datei und der dazugehörigen Header-Datei.
Autor: Mike Sharpe
Quelle: Vim Online
calendar Kalender, damit man den Abgabetermin für die neue Software näher rücken sieht ;-)
Autor: Yasuhiro Matsumoto
Quelle: Vim Online
CRefVim C-Reference-Manual, siehe hier
GrepUtil dateiübergreifende Suche nach markiertem Wort, Wort unter dem Curosr, oder Suchstring; siehe hier
PrtDialog Drucker-Einstellungen, siehe hier
TransVim Nachschlagen im Wörterbuch, siehe hier