Vim ist ein vielseitiger Editor, der sich über Makros erweitern läßt. Er bietet /SyntaxHighlighting und eine grafische Oberfläche basierend auf GTK. Diese heißt gvim. Die KDE-Version hieß Kvim, war aber meistens buggy, und wird auch schon einige Jahre nicht mehr weiterentwickelt. Die Entwickler stecken die Arbeit jetzt in ein Projekt namens Kyzis. Ansonsten kann man aber die grafische GTK-Oberfläche auch unter KDE verwenden.

Der Vim ist ein Klon des original vi.

Homepage: http://www.vim.org/

Lizenz: Vim-Lizenz

Es gibt auch ein recht gutes Online-Buch (en) im PDF-Format über Vim, siehe dort auch insbesondere die Programmiertipps ab S.67.

Vim - das Überlebensnotwendige

So, soviel zum Überlebensnotwendigen mit Vim.

Weitere Befehle

Beispiele

Kleine Aufgaben mit vim erledigen

Suchen und Ersetzen in /etc/fstab

* alle Mounts sollen mit der Option "noatime" ergänzt werden:

Mit vimtutor bekommt man eine Einführung in und im Vim.

Syntax-Highlighting

Automatische Einrückung

Kann man über die Optionen autoindent, smartindent und cindent steuern.

Wer etwa will das Tabs nur 4 Leerzeichen breit angezeigt werden sollte set tabstop=4 setzen und evtl. auch noch set shiftwidth=4 setzten damit auch im falle von cindent etc. richtig eingerückt wird.

Wenn man per X11 Copy&Paste Inhalte z.B. aus nem Web-Browser übernehmen will, sollte man autoindent vorher abschalten per :set noai - dann muss man nicht das ansonsten entstehende "Treppenmuster" entfernen.

"Top-Ten" der Vim Befehle

  1. u Die undo Funktion ist immens wichtig. Schön ist auch, daß vim im Gegensatz zu vi mehr als eine Änderung rückgängig machen kann.

  2. <STRG-p> bzw. <STRG-n> (also STRG-Taste und p oder n gleichzeitig) Ich editiere vor allem C/C++-Code und oft weiß ich 10 Zeilen später nicht mehr, ob ich die Variable jetzt vrglStr, vrglstring, vrgl_string oder vrgl_String genannt habe. Also im Code die Zeilen zurück, nachschauen usw.? NEIN, einfacher: Ich tippe vrgl (soweit kann ich mich noch erinnern ;-) ) und dann <STRG-p> - jetzt sucht Vim rückwärts nach Worten, die mit vrgl anfangen. Der erste Treffer wird angezeigt und ich kann einfach weiter schreiben. Würde es noch mehr Wörter geben, die mit vrgl anfangen, werden die der Reihenfolge nach angezeigt, ich muss nur nochmal <STRG-p> drücken. Das p steht für Previous. Wer das ganze mit <STRG-n> ausprobiert, sieht, dass n für Next steht, also einfach die Suchrichtung umgekehrt ist.

  3. # und * Wenn der Cursor über einem Wort steht und Du drückst #, dann heißt das für den Vim "suche rückwärts nach diesem Wort und bringe den Cursor dort hin". * macht das gleiche, nur ist hier die Suchrichtung vorwärts.

  4. % Steht der Cursor über einer Klammer, springt % zu der dazugehörigen öffnenden bzw. schließenden Klammer. Das funktioniert auch mit dem vi. Mit folgendem Skript http://www.vim.org/scripts/script.php?script_id=39 funktioniert das auch mit Sprachen, die andere Kontrollstrukturen haben, wie etwa TeX oder XML. Befindet man sich also über einem Tag und drückt % springt vim zum entsprechenden Gegenstück.

  5. :%s/windows/linux/g Suchfunktion: windows suchen, durch linux ersetzen, g steht für alle Vorkommen in einer Zeile, % für den gesamten Text

  6. v, V und ctrl-V Zeichen, Zeilen und Blockweises visuelles Markieren. Nach dem Markieren kann mit I Text eingefügt werden. c ändert den Markierten Text, x oder d löscht ihn und > und < rücken ihn ein.

  7. = Dient der korrekten Ausrichtung von Programm Texten. Einfach mal =% oder == ausprobieren.

  8. :noh Schaltet die Hervorhebung von Suchergebnissen ab, die bei kurzen Suchstrings sehr irritierend werden kann. Alternativ kann man auch nach einer definitiv nicht vorhandenen Zeichenfolge suchen (z.B. /cdnnsdcjsd).

Die ~/.vimrc bzw. ~/.gvimrc

Das sind die Konfigurationsdateien für den Vim. Beim Start des Gvim wird zusätzlich auch die ~/.gvimrc gesourced. Sind keine rc's im Homeverzeichnis, so werden die defaults durchlaufen. Bei Debian sind die in /etc/vim ansonsten im Installationsverszeichnis von Vim, das normalerweise /usr/share/vim ist. In der ~/.vimrc (hier ein Beispiel) und ~/.gvimrc lassen sich jetzt tolle Sache unterbringen, wie z.B. das bevorzugte Color-Scheme usw.

Plugins / Ftplugins

Vim unterstützt Plugins und zwar systemweit oder benutzerspezifisch. Es gibt davon inzwischen über 1200, siehe http://www.vim.org. Plugins gibts zu den verschiedensten Themen: CVS-Tools, Projekt-Verwaltung, Kalender, schon mal mit Vim Tetris gespielt?

Ftplugin bedeutet File-Typ spezifisches Plugin. So gibt es ftplugins die z.B. die Syntax von HTML oder Python oder usw. besonders unterstützen.

Es ist nicht schwer, sich einfache Plugins selber zu schreiben, z.B. um sich zusätzliche Menubars selber einzubinden.

Vim und Tabellen

Wer unter vim mit Tabellen arbeitet, wird Bedarf an Sortierfunktionen haben.

Das alphabetische Sortieren von Spalten beherrscht folgendes Script:

:call Cream_sortfile()

Es kann sogar Datumseinträge sortieren.

Das Sortieren von Spalten nach der Größe von Zahlen kann es nicht.

 -> Eine diesbezügliche Ergänzung wäre toll. ;)

Da einige Webbrowser wie z. B. w3m das Einbinden von Editoren beherrschen, kann VIM natürlich auch "wiki". Ein kleines Skript für Wiki-Syntax gibt's ebenfalls.

Hilfe-System

Das Hilfesystem von Vim ist sehr leicht (natürlich wieder benutzerspezifisch) zu erweitern.

Weitere Links

Tipps & Tricks

Debian

gvim funktioniert erst nach apt-get install vim-gtk. Allerdings schließt dies beispielsweise das Paket vim-perl (Vi IMproved mit Perl-Scripting-support) aus.

Problem: Navigieren in langen Zeilen: Solange ich eine Zeile nicht mit Return abschließe, wird die ggf. auf dem Bildschirm automatisch umgebrochen, geht also z.B. über zwei Bildschirmzeilen. Die Tasten Pfeil-rauf, Pfeil-runter, Pos1 und Ende beziehen sich nun nicht auf die Bildschirmzeilen, sondern auf die tatsächlichen Zeilen (bis zum Zeilenende-Zeichen). Wie kann ich denn bequem die Bildschirmzeilen navigieren? Wie komme ich z.B. von der Bildschirmzeile 2 direkt zu dem auf dem Bildschirm darüberliegenden Zeichen? Bei "normalen" Textverarbeitungen ja mit Pfeil-rauf. Und bei vim?

Um sich in Bildschirmzeilen zu bewegen, kann man im Normalmodus

Bei Bedarf kann man auch die Cursortasten entsprechend anpassen. (Siehe auch: Vim FAQ, Abschnitt 9.4)

Cream

Cream als einfache Konfiguration für Vim verwenden.

Pida

Pida ist eine grafische IDE, die als Editor einen VIM (alternativ auch Cream) eingebettet hat - und bietet viele Zusatzfeatures z.B. zum Thema Versionskontrolle etc. Pida IDE Website

cscope

cscope ist ein interaktives Programm zum navigieren im Quellcode. Als erstes wird im Quellcode-Verzeichnis mit dem Befehl cscope-indexer eine Datenbank (cscope.out) angelegt. Hier werden die Informationen der Codeanalyse gespeichert.

user@host:/tmp/codetest$ tree
.

`-- src
    |-- main.c
    `-- test.c
user@host:/tmp/codetest$ cscope-indexer -r
user@host:/tmp/codetest$ tree
.
|-- cscope.files
|-- cscope.out
`-- src
    |-- main.c
    `-- test.c

Nun startet wir vim im Verzeichnis in der sich die Datenbank befindet (/tmp/codetest).

user@host:/tmp/codetest$ vim

Zum erstellen einer Datenbankverbindung wird folgender Befehl eingegeben:

:cscope add .

Mit show lassen sich die Datenbankverbindungen anzeigen:

:cscope show

Nun wollen wir die main-Funktion suchen, dies wird mit folgendem Befehl gemacht:

:cscope find g main

vim öffnet die Datei in der sich die main-Funktion befindet und springt zu der richtigen Zeile.

Die Hilfe wird mit :cscope help angezeigt:

cscope Befehle:
add  : Eine neue Datenbank hinzufügen (Verwendung: add file|dir [pre-path] [flags])
find : Muster suchen                  (Verwendung: find c|d|e|f|g|i|s|t name)
       c: Find functions calling this function
       d: Find functions called by this function
       e: Find this egrep pattern
       f: Find this file
       g: Find this definition
       i: Find files #including this file
       s: Find this C symbol
       t: Find assignments to
help : diese Nachricht anzeigen       (Verwendung: help)
kill : Verbindung abbrechen           (Verwendung: kill #)
reset: Verbindungen reinitialisieren  (Verwendung: reset)
show : Verbindungen anzeigen          (Verwendung: show)

Humor

Das Kommandozeichen ! bedeutet soviel wie force - tippt mal :help! ein :)

Fragen

  1. auf Systemen wo vim als default installiert ist, kann auch nur "vi" benutzt werden (1)

Vim (zuletzt geändert am 2018-11-23 19:25:29 durch JonesHamatoma)