ubuntuusers.de » Wiki » Vim

Vim

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

vim.png

Viele Benutzer schrecken vor dem sehr praktischen Editor vim wegen seiner etwas sperrigen Bedienung zurück. Wer sich aber erst einmal mit den verschiedenen Betriebsmodi vertraut gemacht hat, mag auf die hilfreichen Dienste des schlanken Editors nicht mehr verzichten. Vim ist eine Weiterentwicklung des Texteditors vi, deshalb auch der Name als Abkürzung für "vi improved". Zugegeben: es gibt Editoren, die wesentlich leichter zu bedienen sind, z.B. Pico oder Nano. Jedoch hat vim einige Vorteile:

  • auf jedem POSIX-konformen System ist mindestens der Vorfahr des vim, der vi, als Editor vorhanden

  • navigierbar ohne Cursor-Tasten (kann bei Tastatur-Problemen in Remote-Sessions helfen)

  • superschnelle Bedienbarkeit

Es stehen auch grafische Oberflächen zur Verfügung:

  • gvim (graphical vim, graphische Oberfläche) - benutzt GTK+

  • Yzis - ein vim-ähnlicher Editor, der Qt nutzt

Man sollte sich nicht von der anfangs komplizierten Bedienung abschrecken lassen. Mit einer Handvoll Befehlen kommt man sehr gut klar (z. B. i, ESC, :w, :wq, dd). Näheres dazu im folgenden.

Installation

Auf Ubuntu Dapper Drake 6.06 ist vim standardmäßig installiert. Fehlt der Editor trotzdem, kann man ihn über das Paket

  • vim

nachinstallieren.

Ab Ubuntu Edgy Eft 6.10 ist standardmäßig eine abgespeckte Vim-Version installiert, die über wesentlich weniger Funktionen verfügt als das Original. Will man ernsthaft mit vim arbeiten sollte man das Paket

  • vim

installieren[2].

Start

Starten lässt sich der Editor im Terminal [1] mit

vim datei.txt 

Hinweis:

Der Befehl vi ruft nicht mehr den alten vi auf, sondern vim. vi datei.txt führt also zu dem gleichen Ergebnis.

Damit öffnet man die Datei datei.txt im aktuellen Verzeichnis. Existiert die Datei nicht, wird sie beim Speichern angelegt.

Für den Einstieg in vim empfiehlt es sich, das Vim-Tutorial durchzuarbeiten. Man startet es mit dem Befehl

vimtutor 

Hinweis:

Der Befehl vimtutor funktioniert nicht mit dem vim-tiny (siehe oben).

Die vi-Modi

Vim arbeitet nicht so sehr mit Tastenkombinationen (wie zum Beispiel Emacs), sondern verwendet verschiedene Eingabe-Modi, zwischen denen man hin- und herschalten muss.

Eingabemodus / Editieren

Um vom Befehlsmodus in den Eingabemodus zu wechseln, betätigt man die Taste I. Nun kann man losschreiben.

Hinweis:

Mit evim startet man eine grafische Version des vim, indem nur der Einfügemodus existiert. So ist vim also fast wie ein normaler Editor. Gut für Anfänger, jedoch fallen dabei so gut wie alle Features weg, die die Bedienbarkeit beschleunigen.

Befehlsmodus

Vim startet in diesem Modus. Hier kann man Befehle absetzen, um den Text zu bearbeiten, jedoch keinen Text eingeben. Um in diesen Modus zu wechseln betätigt man Esc. Vor das Kommando setzt man einen Doppelpunkt. Man kann hier nicht sofort Text eingeben, sondern nur Kommandos absetzen, z. B. zum Speichern (:w) oder zum Suchen eines Strings (/SUCHSTRING). Man kann den Cursor im Text bewegen, diesen aber nicht bearbeiten.

Um wieder etwas einzugeben (Eingabemodus), einfach I betätigen.

Damit kann man nun schon ganz gut arbeiten. Um für alles gerüstet zu sein, sollte man sich ein paar der wichtigsten Kommandos merken. Ein Teil davon wird im Folgenden aufgelistet.

Befehle

Editieren
i Einfügen links vom Cursor
I Einfügen am Zeilenanfang
a Einfügen rechts vom Cursor
A Einfügen am Zeilenende
o Neue Zeile unterhalb der aktuellen Zeile einfügen
O Neue Zeile oberhalb der aktuellen Zeile einfügen
rc Ersetze ein Zeichen unter Cursor durch das Zeichen "c"
R Überschreiben ab Cursorposition
sText Ersetze ein Zeichen durch "Text"
SText Ersetze ganze Zeile durch "Text"
nsText Ersetze n Zeichen durch "Text"
cwText Ersetze Wort durch "Text"
ccText wie Stext
cc bis zur nächsten Zeilengrenze überschreiben
dd aktuelle Zeile ausschneiden(löschen)
d$ aktuelle Zeile ab dem Cursor ausschneiden(löschen)
4Befehl Wiederhole den Befehl vier mal (s. nächste Zeile)
4dd ab aktueller Zeile vier Zeilen löschen

vi beenden
:q Verlassen ohne zu speichern. Funktioniert nur, falls das Dokument nicht verändert wurde.
:q! Verlassen ohne zu speichern auch bei modifiziertem Dokument.
:wq Schreiben des Puffers und Verlassen.
:wn Der Puffer wird geschrieben und das nächste Dokument geladen.
ZZ Wie :wq.
:x Wie :wq.

Text kopieren
yy Kopiert aktuelle Zeile in einen Puffer.
ny Kopiert n+1 Zeilen in einen Puffer.
yw Kopiert ein Wort rechts vom Cursor in Puffer.
yb Kopiert ein Wort links vom Cursor in Puffer.
d5d Ab aktueller Zeile 5 Zeilen in den Puffer und löschen
p Text aus dem Puffer an Cursorstelle einfügen

Info: Das Kopieren folgt immer dem gleichen Schema:

  • Text in einen Puffer kopieren

  • Text aus (einem bestimmten) Puffer einfügen

Suchen und Ersetzen
/muster Suche nach Muster vorwärts im Text.
/ Wiederholt die Suche vorwärts.
?muster Suche nach Muster rückwärts im Text.
? Wiederholt die Suche rückwärts.
n Wiederholt letztes Suchkommando.
:s/alt/neu Sucht und ersetzt »alt« durch »neu« (nur das erste Auftreten in aktueller Zeile).
:s/alt/neu/g Sucht und ersetzt alle »alt« durch »neu« in aktueller Zeile.
:s/alt/neu/c Sucht und ersetzt »alt« durch »neu« in aktueller Zeile mit Nachfrage.
:s/alt/neu/gc Sucht und ersetzt alle »alt« durch »neu« in aktueller Zeile mit Nachfrage.
:1,99s/alt/neu Ersetzen von Zeile 1 bis Zeile 99.
:1,$s/alt/neu Ersetzen im gesamten Dokument.
:%s/alt/neu Ersetzen im gesamten Dokument.
:%s/alt/neu/c Ersetzen im gesamten Dokument mit Nachfrage (ACHTUNG: findet nur ein Ergebnis pro Zeile).
:%s/alt/neu/gc Ersetzen im gesamten Dokument mit Nachfrage (findet alle Ergebnisse pro Zeile).

Hinweis:

vim verwendet Reguläre Ausdrücke (engl. Regular Expressions) zum Suchen und Ersetzen.

Info: Ohne die Option g wird immer nur ein Ergebnis pro Zeile gefunden und damit auch nur ein Ergebnis ersetzt.

  • Option g: findet alle Ergebnisse pro Zeile

  • Option c: jede Änderung muss bestätigt werden (c - confirm)

Cursor bewegen
h Cursor nach links
j Cursor nach unten
k Cursor nach oben
l Cursor nach rechts
w Cursor ein Wort vorwärts bewegen
3w Cursor drei Worte vorwärts bewegen
b Cursor ein Wort rückwärts bewegen
$ mit dem Cursor zum Zeilenende springen
0 mit dem Cursor zum Zeilenanfang springen
G mit dem Cursor zur letzte Zeile springen
gg mit dem Cursor in die erste Zeile springen
9G mit dem Cursor zur Zeile 9 springen
:Zeilennummer springen zu Zeilennummer
% zeigt die zugehörige Klammer eines Klammerpaars

Info: Man kann auch die Cursor-Tasten verwenden. Je nach Systemeinstellungen funktionieren auch die Tasten "Entf", "Pos 1" und "Ende".

Markierungen
mBuchstabe Markierung setzen
'Buchstabe gehe zu Markierung

Set-Befehle
:set all anzeigen aller möglichen Set-Befehle
:set nu Zeilennummern anschalten
:set number Zeilennummern anschalten
:set nonu Zeilennummern ausschalten
:set nonumber Zeilennummern ausschalten
:set list Datei mit Sonderzeichen anzeigen
:set nolist Sonderzeichen ausblenden

Sonstiges
u Macht das jeweils letzte Kommando rückgängig (mehrstufig möglich).
Strg + R oder :redo Wiederholt das letzte rückgängig gemachte Kommando.
U Stellt die aktuelle Zeile wieder her.
. (Punkt) Wiederholt das letzte Einfüge- bzw. Lösch-Kommandos.
:r datei Liest datei hinter die aktuelle Zeile ein.
:sh Aufrufen einer Shell / beenden der Shell mit exit
:e datei Lädt datei in den Buffer.
:new datei Öffnet datei in geteiltem Fenster (Fenster wechseln: Strg + ww).
:split Öffnet bereits offene Datei in geteiltem Fenster.
:tabnew datei Öffnet datei in neuem Tab (Tab wechseln: Strg + Alt + Bild hoch/runter).

Hilfe

Die eingebaute Hilfe in vim ist sehr umfangreich. Man erreicht sie mit dem Befehl

:help Befehl 

  • bzw. :he, wo man auch sofort eine Seite mit Hilfe zur Navigation in der Hilfe findet.

Konfiguration

Vim sucht bei Programmstart nach einer Konfigurationsdatei - standardmäßig ist das die versteckte Datei .vimrc im Benutzer-Verzeichnis. Eine gute Vorlage findet man unter /etc/vim/vimrc. Die Vim Konfigurationsdatei bietet nicht nur Platz für persönliche Einstellungen, sondern auch für eigene Makros {de} .

Hinweis:

Für die besagte Konfiguration muss an dieser Stelle das Paket vim installiert sein.

Eigene Konfigurationsdatei

Eine eigene .vimrc ist schnell erstellt. Man öffnet ein Terminal [1] und gibt folgenden Befehl ein:

vi .vimrc 

Jetzt drückt man I um in den Eingabemodus zu gelangen. Hier kann man jetzt seine eigene Einstellungsdatei erstellen. Ein leichtes Beispiel (bei Bedarf einfach in den jetzt geöffneten Vim einfügen):

Syntaxhighlighting einschalten syntax on
Zeilennummerierung anzeigen set number
Während der Suche schon zum entsprechenden Text springen set incsearch
Suchergebnisse farbig markieren (mit :nohls verschwinden die Hervorhebungen wieder) set hlsearch
Keine automatische Einrückung set nosmartindent

Mit Esc verlässt man den Eingabemodus wieder und beendet vim mit

:wq 

Hinweis:

In der Konfigurationsdatei fällt jedoch der Doppelpunkt weg, den man bei Konfigurationseingaben im Editor benötigt. Weitere Konfigurationsdateien werden in diesem Forums-Thread veröffentlicht.

Eingabe von Sonderzeichen

Sehr praktisch ist die Eingabe von Sonderzeichen gelöst. Hierfür wird im Eingabemodus Strg + K und danach eine Tastenkombination gedrückt:

Strg + K + A + - ā
Strg + K + C + , ç
Strg + K + I + . İ
Strg + K + O + < ǒ

So lassen sich zum Beispiel die Tonhöhen bei der chinesischen Pinyin-Lautschrift sehr leicht eingeben (erster Ton: -, dritter Ton: <).

Eine Übersicht über alle Tastenkombinationen kann man sich mit :digraphs im Befehlsmodus anzeigen lassen, während :help digraphs eine weiterführende Hilfe ausgibt.

Vim-Skripte (Plugins, Syntax-Dateien usw.)

Vim-Skripte werden in ~/.vim/$UNTERORDNER abgelegt, wobei der $UNTERORDNER unterschiedlich ist. Syntax-Dateien müssen beispielsweise in ~/.vim/syntax gespeichert werden, damit sie von vim erkannt werden. Den passenden Unterordner erfährt man meist in der README- oder INSTALL-Datei des Plugins. Eine sehr umfangreiche Sammlung von Vim-Skripten ist auf vim.org {en} zu finden.

Farbschemas (colorschemes)

Mit der Einstellung syntax on ist der Programmcode farbig hervorgehoben. Diese Farbkombinationen stehen in einem colorscheme-File. Diese befinden sich in /usr/share/vim/vim71/colors. Wenn man ein eigenes Schema schreiben will, ist eine Anleitung mit Tipps in README.txt enthalten. Eine Sammlung von colorschemes für GVim gibt es hier {en} . Für eigene oder heruntergeladene Farbschemata kann man auch das Verzeichnis ~/.vim/colors anlegen und die entsprechenden Dateien dort speichern.

Um ein Farbschema in Vim auszuwählen, gibt man entweder den Befehl :colorscheme NAME_DES_SCHEME ein oder fügt

syntax on
colorscheme NAME_DES_SCHEME

in die ~/.vimrc ein. Der Name des Schemas muss dabei ohne die Endung .vim angegeben werden.

Unterschiedliche Darstellung in vim/GVim

Farbschemas werden in vim und GVim anders dargestellt. Das liegt daran, dass das Terminal nur bis zu 256 Farben darstellen kann, GVim aber alle, die vom System bereitgestellt werden. Um für vim und GVim andere colorschemes zu verwenden, kann man folgendes in die eigene .vimrc schreiben:

if has('gui_running')
  colorscheme gvimcolorscheme
else
  colorscheme vimcolorscheme
endif

Rechtschreibprüfung

Dazu kann man die Hunspell Wörterbücher, die auch von Open Office benutzt werden, verwenden. Dazu geht man folgendermaßen vor:

  1. Wörterbuch installieren, diese geschieht über das Paket hunspell-de-de [2] (bzw. die entsprechenden Pakete für andere Sprachen)

  2. benötigten Ordner anlegen [1]

    mkdir -p ~/.vim/spell  
  3. Vim starten und im Normalmodus das folgende Kommando ausführen um das Wörterbuch nutzen zu können.

    :mkspell ~/.vim/spell/de /usr/share/myspell/dicts/de-DE 
  4. In Vim den Befehl

    :set spelllang=de spell 

    ausführen um die Rechtschreibprüfung zu aktivieren.

Wer möchte, dass diese bereits beim Programmstart aktiv ist kann dafür den letzten Befehl unter Punkt 4 in die Datei ~/.vimrc eintragen

Es gibt noch zwei weitere Möglichkeiten zu einer Rechtschreibprüfung für Vim zu kommen: Eine mit einem Aufruf von Aspell aus vim heraus beschreibt zinformatik.de {de} (die funktioniert im Gvim leider nicht richtig). Die zweite ist im Wiki von Archlinux erklärt: Rechtschreibprüfung_unter_Vim {de}.

LaTeX

Wer mit Vim LaTeX-Dokumente erstellen möchte, der findet mit der vim-latexsuite {en} eine zusätzliche Vielzahl an Funktionen extra zum Arbeiten mit LaTeX-Dokumenten. Von Syntax-Highlighting über Templates bis hin zu Codecompletion bleibt eigentlich kein Wunsch offen. Die Suite kann über das Paket:

  • vim-latexsuite (universe, [2])

installiert werden [1].

Damit unter Gvim, wenn Dokumente mit der Endung *.tex geöffnet werden, automatisch die graphischen Schaltflächen der LaTeX-Suite für gvim starten, muss erst dies in die ~/.vimrc eingetragen werden:

filetype plugin on
if has('gui_running')
    set grepprg=grep\ -nH\ $*
    filetype indent on
    let g:tex_flavor='latex'
endif

Möglicherweise werden die Schaltflächen trotzdem noch nicht angezeigt. Abhilfe schafft die Installation von:

  • vim-addon-manager (universe)

Danach führt man im Terminal folgenden Befehl aus:

vim-addons install latex-suite
vim-addons status # zur Kontrolle 

forward searches

Damit der DVI-Viewer nach den ausführen von \ls im Normalmodus gleich die Stelle im DVI-File anzeigt die gerade bearbeitet wird, kann man in die Datei ~/.vim/ftplugin/tex.vim die Zeilen

:let g:Tex_CompileRule_dvi = 'latex -src-specials -interaction=nonstopmode $*'
g:TCTarget dvi

einfügen. Unter Umständen kann das jedoch zu Fehlern führen.

inverse searches mit xdvi(k)

Möchte man an eine gewünschte Stelle im .tex -file gelangen, indem man mittels Strg + linke Maustaste diejenige Stelle in dem (mittels xdvi ausgegebnen) DVI-File auswählt, muss man die Zeilen

let g:Tex_ViewRule_dvi = 'xdvi -editor "gvim --servername xdvi --remote +\%l \%f" $* &'
let g:Tex_ViewRuleComplete_dvi = 'xdvi -editor "gvim --servername xdvi --remote +\%l \%f" $* &'

zu ~/.vimrc hinzufügen, und gvim von nun an mittels

gvim --servername xdvi 

starten [1].

Merkblätter (Cheat Sheets)

Auf viemu.com {en} gibt es neben dem Graphical Cheet Sheet, welches alle Befehle enthält, auch noch ein Tutorial. Im Debianforum.de {de} findet man eine deutsche Tastaturbelegung. Auf dieser Seite kann die Belegung auch in einer größeren Auflösung sowie als PDF {de} heruntergeladen werden.

vimcheatsgermankeyboard56dd.png

Auf LinuxFibel {de}/{en} wird eine weitere Übersicht zur Verfügung gestellt:

vimcheat.png

Diese Revision wurde am 3. Dezember 2009 um 06:30 Uhr von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Editor, Shell

Passwort vergessen?