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 nachgerüstet 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
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)
- Vervollständigung von Variablen- und Funktionsnamen (:help new-omni-completion; für C/C++ siehe :help omnicppcomplete)
- 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
Nachfolgend sind einige der von mir am häufigsten benutzten externen Tools aufgeführt.
Tools | |
---|---|
ctags | Dieses Tool erstellt aus dem zu analysierenden Quell-Code eine Datenbank anhand derer Vim zu Funktionen, Variablen, Strukturen usw. navigieren kann und Auto-Vervollständigung ausführen kann. Plattformen: Linux, Windows, und viele andere Quelle: Es gibt viel verschiedene Implementierungen. Eine der leistungsfähigsten ist Exuberant Ctags. |
cscope | Dieses Tool findet im Gegensatz zu ctags nicht nur nur wo etwas definiert/deklariert ist, sondern auch wo etwas verwendet wird. Plattformen: Unixe + Windows (cygwin) Quelle: zur Homepage |
grep | Grep ist ein sehr mächtiges Tool zur Suche in Textdateien. Seit Version 7 von Vim ist eine Variante dieses Tool in Vim integriert, siehe :help vimgrep. 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
IDE | |
---|---|
c | Eine IDE für C/C++, die u.a. das Übersetzen und Starten des Projekts erlaubt. Autor: Fritz Mehner Quelle: Vim Online |
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 |
Source-Code-Verwaltung | |
---|---|
vcscommand.vim | Ermöglicht das Steuern von CVS, SVN, SVK, git, hg und bzr von Vim heraus. Autor: Bob Hiestand Quelle: Vim Online |
Integration Debugger | |
---|---|
gdbvim | Integriert den gdb in Vim. Autor: Tomas Zellerin Quelle: Vim Online |
idevim | Integriert den gdb in Vim. Autor: K T Lighish 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 |
Source-Code-Browser | |
---|---|
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 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 |
mark | Dieses Plugin erlaubt das Markieren verschiedener Wörter in verschiedenen Farben. Dies ist sehr hilfreich, um z.B. einen schnellen Überblick zu erhalten, wo welche Variable oder Funktion verwendet wird. Autor: Yuheng Xie Quelle: Vim Online |
VisualMark | Erlaubt das Setzen und Anspringen von Bookmarks, die als solche markiert sind. Autor: Brian Wang Quelle: Vim Online |