Icon KetteLinks
Icon PluginsPlugins

Tipps & Tricks

Vim-Hilfe anzeigen

Die ausführlichste Vim-Dokumentation steckt in Vim selbst. (Englisch).

Kommandozeilen-Modus:

:h[elp]
:h[elp] Befehl
:h[elp] toc (User-Manual)


Im Help-File navigieren

Worte zwischen senkrechten Strichen bilden einen Link: |example|

Die Links lassen sich mit der Maus anklicken wenn folgende Option gesetzt wurde: set mouse=a

Oder mit der Tastatur wenn sich der Cursor auf dem Link befindet:

Strg-AltGr-9

Das ist recht umständlich. Hier ein Mapping: map <F12> <C-]>

Zurück zum Ausgangspunkt: Strg-T


Text zwischen Anführungszeichen löschen

Normaler Modus: ci"

oder für Tag-Objekte

Normaler Modus: cit


Autocompletion

Wenn man im Einfüge-Modus beginnt ein Wort zu schreiben und danach Strg-P drückt, schlägt Vim ähnliche Worte vor die bereits im Text enthalten sind.

Zeile vervollständigen: Strg-X dann Strg-L


Korrektur von Befehlen

Mit u wird der zuletzt ausgeführte Befehl rückgängig gemacht (Undo). Mit Strg-R wird die letzte änderung wiederhergestellt (Redo).


Jump-Back-Liste

Mit Strg-O und Strg-I kann man zu den zuletzt bearbeiteten Zeilen/Dateien springen.


Datei verschlüsseln

Achtung: Schwache Chiffrierung (PkZip)

Im Kommandozeilen-Modus:

1. :X
2. Passwort eingeben
3. :w

Verschlüsselung rückgängig machen:

1. :set key=
2. :w

Sicherer: Bcrypt, Elettra, GnuPG

Ab Vim Version 7.3 ist Blowfish-Verschlüsselung möglich:

set cryptmethod=blowfish


Automatische Einrückungen (Treppeneffekt) nach Copy & Paste verhindern

Folgende Zeile in die Vim-Konfigurationsdatei (.vimrc) einfügen: set pastetoggle=<F8>


Suchen

Vorwärtssuche eines Musters:

/muster

Rückwärtssuchen eines Musters:

?muster

Vorwärtssuche des Wortes unter dem Cursor: *

Rückwärtssuchen des Wortes unter dem Cursor: #

Wiederholung der letzten Suche: n

Wiederholung der letzten Suche in umgekehrter Richtung: N


Hervorhebungen der Suche entfernen

Mapping (Strg-L):

map <silent> <c-l> :silent nohl<cr>


Vim als Dateibrowser

Kommandozeilen-Modus:

Split & Explore: :Sex[plore]

Tab & Explore: :Tex[plore]


Aktuelle Zeile einrücken

Im Normal-Modus: >>


Textbereiche ausblenden (falten)

Manuelle Faltung erreicht man durch Markierung einer Region (Visual-Modus) und anschließendem Drücken von zf. Durch zd wird ein Fold wieder gelöscht, jedoch bleibt dessen Inhalt erhalten, er wird nur entfaltet.

Open fold: zo

Close fold: zc

Open all folds: zR

Close all folds: zM

Eine andere Methode Textbereiche auszublenden ist folgende Zeilen in seine .vimrc einzufügen:

set foldmethod=marker

Standardmäßig werden :: zum Anfang und ;; zum Ende einer Faltung verwendet.

Beispiel:

Fold-Start ::
--- lots of stuff ---
Closing tag ;;


Mauelle Faltungen speichern

Im Kommandozeilen-Modus:

Speichern: :mkvie[w]

Laden: :lo[adview]

View-Dateien speichern Cursorpositionen, Faltungen, lokale Optionen/Mappings/Abkürzungen.


Vertauschen /Zeichen/Wörter/Zeilen

Buchstabendreher lassen sich mit xp korrigieren.

Mit deep lassen sich zwei Wörter vertauschen (Cursor muss sich vorm ersten Wort befinden).

Zeilen können mit ddp vertauscht werden.


Spalten einfügen/bearbeiten

Beispiel Auskommentierung:
Im Normal-Modus mit Strg-V in den visuellen Blockmodus schalten, Zeilenanfänge markieren und dieses Kommando eingeben: I# und Esc.


Den zuletzt visuell markierten Bereich erneut markieren

Im Normal-Modus: gv


Abkürzungen

Definieren: :ab abk Ausdruck

Abkürzungen expandieren sofort, wenn man die Leertaste oder einen Zeilenumbruch eintippt oder mit Esc in den Kommandozeilen-Modus zurückkehrt.

Entfernen: :unab: abk

Auflisten: :ab

Abkürzungen lassen sich natürlich auch dauerhaft in der Konfigurations-Datei (.vimrc) speichern.


Zeilennummerierung

:set nu[mber]
:set nonu[mber]


Schriftart & FarbschemaWindows

Folgenden Zeilen in die Vim-Konfigurationsdatei (_vimrc) einfügen:

set guifont=ProggyCleanTT:h12
colorscheme koehler

Screenshot

Download Proggy Clean


Datei unterm Cursor öffnen

Im Normal o. Visual-Modus: gf

Neuer Tab: Strg-W gf


Datei im Readonly-Modus öffnen

vim -M Datei


Groß- und Kleinschreibung ändern

Zeile großgeschrieben: VU

Zeile kleingeschrieben: Vu

Wort großgeschrieben: veU

Wort kleingeschrieben: veu

Zwei Zeilen zusammenfügen:

Im Normal-Modus: J


In benanntes Register kopieren

Um etwas in ein Register zu kopieren werden dem Kopierbefehl Anführungszeichen und der Name des gewünschten Registers vorangestellt.

Zeile in Register a kopieren: "ayy

Text aus Register a einfügen: "ap

Anzeigen aller Registerinhalte :reg


Zeilenumbruch

Zeilenumbruch nach n Zeichen:

set t[ext]w[idth]=n

Zeilenumbruch nachträglich:

Text im Visual-Mode markieren und gq eingeben. Oder unter Linux im Kommandozeilen-Modus:

:%!fmt -30

Zwei Zeilen zusammenfügen:

Im Normal-Modus: J

Zeilenumbruch abschalten:

set nowrap


Foldtext

set foldtext=MyFoldText()

function MyFoldText()
  let line = getline(v:foldstart)
  let sub = substitute(line, '/\*\|\*/\|::\d\=', '', 'g')
  return v:folddashes . sub
endfunction
                                        

Encoding

set fileencoding=iso-8859-1

Eine kurze Beschreibung

Vim («Vi - IMproved») ist ein Texteditor. Das Besondere an Vim ist, dass er sich komplett und schnell mit der Tastatur bedienen lässt. Mit der grafischen Oberfläche sind zwar viele Befehle auch mit der Maus erreichbar, aber fast immer ist man mit der Tastatur schneller.

Zu diesem Zweck ist der Editor in mehrere Modi eingeteilt:

  • Normal-Modus
    Nach dem Start befindet man sich im Normal-Modus. Hier kann man keinen Text tippen, denn alle Tasten sind mit Kommandos wie Ausschneiden, Einfügen und vielem mehr belegt.
  • Kommandozeilen-Modus
    Indem man einen Doppelpunkt tippt, begibt man sich in den Kommandozeilen-Modus. Hier können ausführlichere Dinge wie Speichern, Laden und Einstellungen ändern vorgenommen werden.
  • Einfüge-Modus
    Im Einfüge-Modus kann man wie gewohnt Text schreiben. Durch Drücken der i-Taste gelangt man vom Normal-Modus in den Einfüge-Modus. über die Esc-Taste gehts wieder in den Normal-Modus.
  • Visual-Modus
    Schließlich gibt es noch den visuellen Modus um einen Text zu markieren an dem Operationen vorgenommen werden sollen.

Vim benötigt eine nicht unbedeutende Einarbeitungszeit, auch, da sich die Bedienung vollkommen von allen üblichen Editoren unterscheidet. Hat man jedoch einige Zeit damit gearbeitet, legt man auch eine überdurchschnittliche Produktivität an den Tag, da die Bedienung sehr konsistent ist und man nicht dauernd von der Tastatur auf die Maus wechseln muss. Gerade für Programmierer eignet sich der Editor wegen vieler ausgefeilter Funktionen in diesem Gebiet und der hohen Konfigurierbarkeit gut. Für Gelegenheitsbenutzer (wegen des hohen Lernaufwandes) und als Textverarbeitung (wegen fehlender Formatierungsmöglichkeiten) ist er jedoch nicht besonders gut geeignet.

Vim steht unter einer GPL-kompatiblen »Charityware«-Lizenz. Das bedeutet, dass Vim frei verteilt werden darf, jedoch erbitten die Entwickler bei Gefallen eine Spende für Kinder in Uganda durch das ICCF.

Vim wird von Bram Moolenaar und vielen Freiwilligen entwickelt.

Vim Grundbefehle

Datei speichern und Vim beenden
Operation Befehl
Aktuelle Datei speichern und Vim verlassen :wq oder ZZ
Vim beenden ohne Datei zu speichern :q!
Aktuelle Datei speichern :w
Aktuelle Datei als Datei speichern
(vergleichbar »Speichern unter«)
:w Datei
Erzwingt das überschreiben von Datei
(auch schreibgeschützte)
:w! Datei
Editierbefehle
Textobjekt ändern Löschen Kopieren
1 Wort cw dw yw
2 Wörter, ohne Satzzeichen 2cW oder c2W 2dW oder d2W ycW oder y2W
1 Zeile cc dd yy oder Y
3 Wörter rückwärts 3cb oder c3b 3db oder d3b 3yb oder y3b
Bis Zeilenanfang c0 d0 y0
Bis Zeilenende c$ oder C d$ oder D y$
Einzelne Zeichen r x oder X yl oder yh
5 Zeichen 5 s 5x 5yl
Bewegungsbefehle I
Bewegung Befehl
links, unten, oben, rechts h, j, k, l
Zum ersten Zeichen der folgenden Zeile +
Zum ersten Zeichen der vorangegangenen Zeile -
An das Wortende (ohne/mit Satzzeichen) e/E
Wortweise vorwärts (ohne/mit Satzzeichen) w/W
Wortweise rückwärts (ohne/mit Satzzeichen) b/B
An den Zeilenanfang 0
An das Zeilenende $
Andere Operationen
Operation Befehl
Text aus Register einfügen P oder p
Vi aufrufen; mit Datei, falls angegeben vi datei
änderungen speichern :w
änderungen speichern, Editor verlassen :wq oder ZZ
Nichts speichern, Editor verlassen :q!
Befehle zum Erstellen und Bearbeiten von Text
Editierarbeit Befehl
Text an der aktuellen Position einfügen i
Text am Zeilenanfang einfügen I
Text an der aktuellen Position anfügen a
Text am Zeilenende anfügen A
Unterhalb des Cursors eine neue Zeile einfügen o
Oberhalb des Cursors eine neue Zeile einfügen O
Zeile löschen und Text ersetzen S
Vorhandene Zeichen mit neuem Text überschreiben R
Aktuelle und folgende Zeile zusammenführen J
Groß-/Kleinschreibung umsetzen ~
Letzte Aktion wiederholen .
Letzte änderung zurücknehmen u
Zeile in ihren ursprünglichen Zustand zurückversetzen U
Markierungsbefehle
Befehl Bedeutung
mx Markiert aktuelle Position des Cursors mit x
'x Bewegt den Cursor an das erste Zeichen der mit x markierten Zeile
`x Bewegt den Cursor zu dem Zeichen, das mit x markiert wurde
`` Zurück zu der Stelle, an der der Cursor vor dem letzten Bewegungsbefehl stand
'' Zurück zum ersten Zeichen der Zeile, in der der Cursor vor dem letzten Bewegungsbefehl stand
:marks Listet alle Marken auf (Normal-Modus)
Marken
Marken Bedeutung
a-z Lokal gültige Marken
A-Z Global gültige Marken (Zusätzlich an den Dateinamen gebunden)
0-9 In diesen Marken werden die Cursorposition und der Dateiname beim Beenden der letzten Vim-Sitzung gespeichert
Bewegungsbefehle II
Bewegung Befehl
Um einen Bildschirm vorwärts scrollen. Strg-F
Um einen Bildschirm rückwärts scrollen. Strg-B
Um einen halben Bildschirm vorwärts scrollen. Strg-D
Um einen halben Bildschirm rückwärts scrollen. Strg-U
Bildschirm eine Zeile hochsscrollen. Strg-E
Bildschirm eine Zeile runter scrollen. Strg-Y
Aktuelle Zeile an den oberen Bilschirmrand scrollen. z Enter
Aktuelle Zeile in die Bildschirmmitte scrollen. z. oder zz
Aktuelle Zeile an den unteren Bildschirmrand scrollen. z-
Cursor zur obersten Zeile des Bildschirms bewegen. H
Cursor zur mittleren Zeile auf dem Bildschirm scrollen. M
Cursor zur untersten Zeile des Bildschirms bewegen. L
Cursor auf das erste Zeichen der nächsten Zeile. + oder Enter
Cursor auf das erste Zeichen der vorigen Zeile. -
Cursor auf das erste Zeichen der aktuellen Zeile. (Leerzeichen und Tabulatoren werden ignoriert). ^
Cursor auf Spalte n der aktuellen Zeile. n|
Cursor an das Wortende. e
Cursor an das Wortende (Interpunktionszeichen werden ignoriert). E
Cursor an den Satzanfang. (
Cursor an den Anfang des nächsten Satzes. )
Cursor an den Absatzanfang. {
Cursor an den Anfang des nächsten Absatzes. }
Cursor an den Abschnittsanfang. [[
Cursor an den Anfang des nächsten Abschitts. ]]
Vorwärts nach einem Muster suchen. /muster
Rückwärts nach einem Muster suchen. ?muster
Suche in gleicher Richtung wiederholen n
Suche in umgekehrter Richtung wiederholen. N
Suche wiederholen, vorwärts. /
Suche wiederholen rückwärts. ?
Cursor auf nächstes Vorkommen des Zeichens x in der aktuellen Zeile. fx
Cursor auf voriges Zeichen vor dem nächsten Vorkommen des Zeichens x in der aktuellen Zeile. Fx
Cursor vor das Zeichen des nächsten Vorkommen des Zeichens x in der aktuellen Zeile. tx
Letzten Suchbefehl in gleicher Richtung wiederholen. ;
Letzten Suchbefehl in umgekehrter Richtung wiederholen. ´
Cursor in Zeile n. nG
Cursor an Dateianfang. gg
Cursor an Dateiende. G
Cursor an die zuletzt editierte Stelle zurück. ``
Cursor auf das erste Zeichen der zuletzt editierten Stelle. ´´
Auswahl von Textblöcken im visuellen Modus
Befehl Auswahl
aw/aW Ein Wort (mit Leerzeichen, ohne/mit Satzzeichen)
iw/iW Ein inneres Wort (ohne Leerzeichen, ohne/mit Satzzeichen)
as Ein Satz (mit Leerzeichen)
is Ein innerer Satz (ohne Leerzeichen)
ap Ein Absatz (mit Leerzeichen)
ip Ein innerer Absatz (ohne Leerzeichen)
Aufrufoptionen
Option Bedeutung
+n datei öffnet datei bei der Zeilennummer n
+ datei öffnet datei bei der letzten Zeile
+/muster datei öffnet datei beim ersten Auftreten von muster
+cmd Das Ex-Kommando cmd wird nach dem Start ausgeführt

Kommandozeilen-EditorTux

In die .bashrc diese Zeile einfügen:

set -o vi


Fenster splitten

Im Kommandozeilen-Modus:

:sp[lit] Datei

oder

vim -o Datei1 Datei2

Zwischen den Fenstern wechseln:

Strg-W W

Fenster max. Größe:

Strg-W _

Alle Fenster gleiche Größe:

Strg-W =

Exakte Größe bestimmen:

z{n} [Enter]


Letzte Aktion wiederholen

Die letzte Aktion wird durch drücken der Punkt-Taste wiederholt (Normal-Modus)


Carriage Return entfernen

:%s/^M//g

Dabei muss man das ^M durch Drücken von STRG+V, gefolgt von STRG+M, eingeben. STRG+V dient dazu, die nachfolgend gedrückte Tastenkombination direkt in den Text zu übernehmen.


Copy & Paste aus und in den Zwischenspeicher

Kopieren: "+y

Einfügen: "+p oder Tasten Shift & Einfg


»alt gr« MappingTux

Als Programmierer und 10-Finger-Tipper ist es unter Linux nervig die eckigen und geschweiften Klammern mit der Taste »alt gr» erzeugen zu müssen.

Workaround Ubuntusers


Schreibrechte »ohne« sudoTux

:w !sudo tee %

Mapping:
cmap w!! %!sudo tee > /dev/null %


Foldcolors

Folgende Zeile in die .vimrc oder in das bevorzugte Colorscheme.

hi Folded guibg=black guifg=gold cterm=none ctermbg=black ctermfg=darkgreen


Git Diff mit VimdiffTux

Jonathan's Techno-tales


Häufigkeit einer Zeichenfolge ermitteln

:%s/zeichenfolge//gn

Das Flag n zählt die Anzahl der Treffer. Es werden keine Änderungen vorgenommen.


Zeichenkette in Datei hervorheben

Folgende 2 autocommands in vimrc einfügen:

au BufRead,BufNewFile *.log syn match fehler /Error/

au BufRead,BufNewFile *.log hi fehler guifg=white guibg=red ctermfg=white ctermbg=red

Tastenfolge aufzeichnen

Aufnahme im Normal-Modus starten: qa

Die Aufnahme wird mit q im Normal-Modus beendet und mit @a abgespielt.


Drucken im Vim

:ha[rdcopy]


Dateinamen schreiben

Im Einfügemodus: Strg-R %


Vim Lernprogramm

In der Linux-Shell vimtutor eingeben.Unter Windows, im Vim-Verzeichnis, die Datei vimtutor.bat starten.


vim2html

:runtime! syntax/2html.vim

Optionen:

:let use_xhtml = 1
:let html_use_css = 1


Mit maximiertem Fenster startenWindows

Folgendes Auto-Kommando in die _vimrc eingeben:

au GUIEnter * simalt ~x


Leerzeichen statt Tabstops

Folgende Zeilen in die _vimrc eintragen:

set tabstop=4
set shiftwidth=4
set expandtab


Modelines

Mit Hilfe von Modelines lassen sich VIM-Optionen in und für eine Datei setzen. Die Optionen müssen in den ersten oder letzten fünf Zeilen des Dokumentes stehen.

Beispiel:

vim:nonumber:textwidth=78

Wenn die Zeile mit einem Kommentarzeichen beginnt muss ein Leerzeichen vor die Anweisungen gesetzt werden.


vimrc öffnen

Im Kommandozeilen-Modus:

:e $MYVIMRC

Dank »file name completion« reicht es »:e $m« zu tippen und anschließend die Tab-Taste zu drücken.

Änderungen »on the fly« übernehmen: :source $MYVIMRC


Aktuelles Verzeichnis öffnen

Öffnet den Dialog »Datei öffnen« im aktuellen Verzeichnis:

set browsedir=buffer


View-Datei(en) löschenTux

Download Bash-Script


Firefox: Edit textareas with Vim

Download Firefox-Addon

Vim im Gnome-Terminal ausführen: Download Start-Script

In den Einstellungen des Addons muss nun noch der Pfad zum Skript angegeben werden.


ESC-Mapping

:imap jj <esc>