64748
Goto Top

Vim Tastenbelegung tabellarisch

Alle Befehle in der Reihenfolge der deutschen Tastatur. Erklärungen in deutscher Sprache.

Die folgende Tabelle ist eher durch Zufall entstanden. Ich wollte mal ausprobieren, ob ich die meisten Vim/Vi Befehle kenne oder eher doch nicht. Deshalb hab ich sie der Reihe nach ausprobiert. Jetzt wo die Tabelle fertig ist, muss sie ja nicht nutzlos auf meinem Rechner liegen. Hier ist sie.


back-to-topNach Tastenfolge

Von links nach rechts zeilenweise (deutsches Tastaturlayout).
Taste Befehl
ESC normal mode
^ gehe zum ersten Zeichen der aktuellen Zeile
~ Groß/Kleinschreibung umkehren (aktuelles Zeichen
! externen Befehl ausführen
". nächsten lösch oder yank Befehl speichere nach Puffer .
". Puffer . füge mit p wieder ein
$ gehe zum Zeilenende
% gehe zur matchenden Klammer
& wiederhole die letzte Ersetzung (:s/...)
/string suche vorwärts
* suche das nächste Vorkommen des aktuellen Wortes
{ gehe zum Beginn des aktuellen Absatzes
( gehe zum Beginn des aktuellen Satzes
) gehe zum Ende des aktuellen Satzes
0 gehe zum Anfang der Zeile
} gehe zum Ende des aktuellen Absatzes
?string suche rückwärts (string)
q. Makro aufzeichnen
q Makroaufzeichnung wieder stoppen
Q ex mode
@. Makro . abspielen
w nächstes wort (erkennt alle Nichtbuchstaben als Trenner)
W nächstes Wort (erkennt nur Whitespace als Trenner)
e Ende des worte (erkennt alle Nichtbuchstaben als Trenner)
E Ende des Wortes (erkennt nur Whitespace als Trenner)
r. ersetze mit .
R Ersetzungsmodus (spring weiter zum nächsten Zeichen)
t. vorwärts bis vor .
T. rückwärts bis hinter .
ZZ Verlassen (mit speichern)
zt scrolle aktuelle Zeile zur oberen Fensterkannte
zb scrolle aktuelle Zeile zur unteren Fensterkannte
zz scrolle aktuelle Zeile in die Fenstermitte
u rückgängig
U ganze Zeile wieder herstellen
i Einfügemodus
I Füge am Beginn der aktuellen Zeile ein
o einfügen in neue Zeile unterhalb
O einfügen in neue Zeile oberhalb
p Puffer hinter Cursor einfügen
P Puffer vor Cursor einfügen
a anfügen
A Anfügen am Zeilenende
s ersetze ab aktuellem Zeichen
S ersetze die aktuelle Zeile
d... lösche...
dd lösche die aktuelle Zeile
D lösche bis zum Zeilenende
f suche vorwärts nach Zeichen in dieser Zeile
F suche rückwärts nach Zeichen in dieser Zeile
gg gehe zum Dateianfang
gf öffne Datei(name) unter Cursor
G gehe zum Dateiende
Zahl G gehe zur Zeile "Zahl"
h ein Zeichen nach links
H gehe zur Fensteroberkante
j eine Zeile nach unten
J füge die aktuelle und die nächste Zeile zusammen
k eine Zeile nach oben
K Hilfe zum aktuellen Wort
l ein Zeichen nach rechts
L gehe zur Fensterunterkante
# suche weitere Vorkommen des aktuellen Wortes
< Einrückung rückgängig machen
> einrücken
y... speichere ... im Puffer
Y speichere ganze Zeile im Puffer
x lösche Zeichen unter dem Cursor
X Backspace
c... ändere...
C ändere bis zum Zeilenende
v Visual Mode einschalten
V Visual Mode zeilenweise
b gehe zum Beginn es vorigen Wortes
B gehe zum Beginn es vorigen Wortes (nur alphanumerisch)
n suche weiter vorwärts
N suche weiter rückwärts
m. Marke . setzen
M Cursor an den Anfang der mittleren Bildschirmzeile
, Umkehrung von f, F, t, T
; nach f oder F weitersuchen
. letzten Befehl wiederholen
: ex Kommando Modus

back-to-topThematisch


back-to-topModus wechseln
ESC normal mode
Q ex mode
i Einfügemodus
I Füge am Beginn der aktuellen Zeile ein
o einfügen in neue Zeile unterhalb
O einfügen in neue Zeile oberhalb
a anfügen
A Anfügen am Zeilenende
v Visual Mode einschalten
V Visual Mode zeilenweise
: ex Kommando Modus

back-to-topCursorbewegung
^ gehe zum ersten Zeichen der aktuellen Zeile
$ gehe zum Zeilenend e
% gehe zur matchenden Klammer
{ gehe zum Beginn des aktuellen Absatzes
( gehe zum Beginn des aktuellen Satzes
) gehe zum Ende des aktuellen Satzes
0 gehe zum Anfang der Zeile
} gehe zum Ende des aktuellen Absatzes
w nächstes wort (erkennt alle Nichtbuchstaben als Trenner)
W nächstes Wort (erkennt nur Whitespace als Trenner)
e Ende des worte (erkennt alle Nichtbuchstaben als Trenner)
E Ende des Wortes (erkennt nur Whitespace als Trenner)
t. vorwärts bis vor .
T. rückwärts bis hinter .
zt scrolle aktuelle Zeile zur oberen Fensterkannte
zb scrolle aktuelle Zeile zur unteren Fensterkannte
zz scrolle aktuelle Zeile in die Fenstermitte
gg gehe zum Dateianfang
G gehe zum Dateiende
Zahl G gehe zur Zeile "Zahl"
h ein Zeichen nach links
H gehe zur Fensteroberkante
j eine Zeile nach unten
k eine Zeile nach oben
l ein Zeichen nach rechts
L gehe zur Fensterunterkante
b gehe zum Beginn es vorigen Wortes
B gehe zum Beginn es vorigen Wortes (nur alphanumerisch)
M Cursor an den Anfang der mittleren Bildschirmzeile


back-to-topLöschen
d... lösche...
D lösche bis zum Zeilenende
x lösche Zeichen unter dem Cursor
X Backspace


back-to-topSuchen
/string suche vorwärts
?string suche rückwärts (string)
* suche das nächste Vorkommen des aktuellen Wortes
f suche vorwärts nach Zeichen in dieser Zeile
F suche rückwärts nach Zeichen in dieser Zeile
, Umkehrung von f, F, t, T
# suche weitere Vorkommen des aktuellen Wortes
n suche weiter vorwärts
N suche weiter rückwärts
; nach f oder F weitersuchen

back-to-topSpeichern (arbeiten mit Puffern)
". nächsten lösch oder yank Befehl speichere nach Puffer .
". Puffer . füge mit p wieder ein
p Puffer hinter Cursor einfügen
P Puffer vor Cursor einfügen
y... speichere ... im Puffer
Y speichere ganze Zeile im Puffer

back-to-topErsetzen
~ Groß/Kleinschreibung umkehren (aktuelles Zeichen)
& wiederhole die letzte Ersetzung (:s/...)
r. ersetze mit
R Ersetzungsmodus (spring weiter zum nächsten Zeichen)
s ersetze ab aktuellem Zeiche
S ersetze die aktuelle Zeile
c... ändere...
C ändere bis zum Zeilenende

back-to-topSonstige
! externen Befehl ausführen
q. Makro aufzeichnen
q Makroaufzeichnung wieder stoppen
@. Makro . abspielen
ZZ Verlassen (mit speichern)
u rückgängig
U ganze Zeile wieder herstellen
gf öffne Datei(name) unter Cursor
J füge die aktuelle und die nächste Zeile zusammen
. letzten Befehl wiederholen
K Hilfe zum aktuellen Wort
< Einrückung rückgängig machen
> einrücken
m. Marke . setzen

back-to-topErklärungen

  • Bei Zeichen gefolgt von '.' ist mit dem '.' irgendein Zeichen gemeint, also z.B. r. würde rZ bedeuten und meint, dass das Zeichen unter dem Cursor durch ein großes 'Z' ersetzt wird.
  • Zeichen gefolgt von ... meint, dass hier eine Operation auf einem Bereich folgt, Beispiel: c3w bedeutet "ersetze die nächsten drei Wörter".

Die obige Tabelle ersetzt nicht das Lesen der Dokumentation! Ihr könnt auf der Kommandozeile das Programm vimtutor aufrufen, es bietet Euch ein Anfängertutorial. Wenn Ihr die Variable $LANG auf deutsch gesetzt habt (z.B. de_DE.utf8) ist es sogar auf Deutsch.

Hilfreich ist das vi vim Cheat Sheet.

Hinweise auf Fehler bitte hier posten oder per PN, die werde ich dann korrigieren.

Markus

Content-ID: 214894

Url: https://administrator.de/contentid/214894

Printed on: December 14, 2024 at 17:12 o'clock

Frank
Frank Aug 21, 2013 updated at 23:30:28 (UTC)
Goto Top
Hi Markus,

da ich "vim" täglich nutze, eine dickes Lob und vielen Dank face-smile

Gruß
Frank
maretz
maretz Aug 22, 2013 at 07:55:49 (UTC)
Goto Top
was ich noch viel nutze ist z.B.

20dd -> lösche von der aktuellen zeile aus diese und die nächsten 20 zeilen (geht natürlich auch mit anderen Nummern…)
64748
64748 Aug 22, 2013 at 18:20:45 (UTC)
Goto Top
Zitat von @maretz:
was ich noch viel nutze ist z.B.

20dd -> lösche von der aktuellen zeile aus diese und die nächsten 20 zeilen (geht natürlich auch mit anderen
Nummern…)

Danke für den Hinweis, das dd werde ich in die Tabelle einarbeiten.

Solche Features wie die Tatsache, dass man fast jedem Kommando eine beliebige Zahl als Parameter für die Anzahl der Wiederholungen voranstellen kann, gehören eher in ein Tutorial. Daher der Verweis auf vimtutor, jemand der völlig ungeübt ist, wird mit der Befehlstabelle nichts anfangen können.

Markus
Alchimedes
Alchimedes Aug 28, 2013 at 19:48:19 (UTC)
Goto Top
Hey Markus,


Super Post !!

das vi(m)tutoruial ist fuer den Anfaenger ein Supereinstieg.
Vieleicht waere es in Deinem Post fuer den Einsteiger noch hilfreich welche modi es bei vi(m) gibt und wie man da wieder rauskommt.

Ich weiss unter modus wechseln zu finden....das rafft der Einsteiger aber noch nicht.

Interessant ist ZZ das kannte ich noch nicht.... was ich nutze ist :x! standard hier waere :wq
aber ZZ ist schneller...

So hier mal schnell nen Terminal auf und ab geht es durch die Tastenbelegung.

ist die Befehlszeilenreferenz in allen Terminals gleich face-smile also sh, bash,dash(Ubuntu) , ksh , blafasel ?
denn bei denn Kommandozeilenbefehlen wissen wir das es nicht so ist.


Gruss
64748
64748 Aug 30, 2013 at 15:50:48 (UTC)
Goto Top
Hallo Alchimedes,
Zitat von @Alchimedes:
Super Post !!
danke, freut mich, dass es Dir gefällt und hilfreich ist.
das vi(m)tutoruial ist fuer den Anfaenger ein Supereinstieg.
Vieleicht waere es in Deinem Post fuer den Einsteiger noch hilfreich welche modi es bei vi(m) gibt und wie man da wieder
rauskommt.
Ich werde mir das überlegen. Wie gesagt ist es nicht als Tutorial aufzufassen (jedenfalls hab ich es nicht so vorgesehen) weil man m.E. einige Grundkenntnisse braucht um die Tabelle zu nutzen.
...
ist die Befehlszeilenreferenz in allen Terminals gleich face-smile also sh, bash,dash(Ubuntu) , ksh , blafasel ?
denn bei denn Kommandozeilenbefehlen wissen wir das es nicht so ist.
Ich werde das oben einarbeiten wenn ich ein bisschen Zeit habe, hier schonmal soviel: die Tastaturbelegung wird auf der Kommandozeile (also ohne X-Window) mit der aus /usr/share/kbd/keymaps/i386/qwertz/ geladenen Datei festgelegt, das findet beim Systemstart statt und wo genau der Befehl dazu steht ist distributionsabhängig.
Wenn man X-Window benutzt, dann muss man (auf aktuellen Systemen) die Datei /etc/X11/xorg.conf.d/90-keyboard-layout.conf bearbeiten, wenn diese nicht existiert kann man sie aus /usr/share/X11/xorg.conf.d/ rüber kopieren. Die dort eingestellte Tastaturbelegung ist Systemweit gültig (wenn man es nicht anders konfiguriert).

Markus
Alchimedes
Alchimedes Aug 31, 2013 updated at 20:17:35 (UTC)
Goto Top
Hallo Markus ,

danke das Du Dir die Muehe machst !


Korrektur:
ist die Befehlszeilenreferenz in allen Terminals gleich
ich meinte natuerlich nicht Terminals sondern shells....


zur Info:
Die Kameraden hab ich auch noch gefunden...

G = fuer an die letzte Zeile des Dokuments springen.
!G = fuer an den Anfang des Dokuments springen
cw = aktuelles Wort ersetzen
dw = aktuelles Wort löschen (incl. angehängtem Leerzeichen)
de = aktuelles Wort löschen (über Zeile hinaus)
dl = Zeichen unter Cursor-Position löschen ( also wohl wie x )
dj = zwei Zeilen löschen (Cursor-Position ist 1. Zeile)
dk = zwei Zeilen löschen (Cursor-Position ist 2. Zeile)

Hau rein
64748
64748 Aug 31, 2013 at 20:29:29 (UTC)
Goto Top
Hallo,

G fehlte in der Tat, ich hab es ergänzt. Das anderen sind ja zusammengesetzte Kommandos, wenn man die bei Vim alle aufzählen will muss man mehrere Bücher veröffentlichen. Daher der Tipp vimtutor durchzuarbeiten.

Zu Deiner Frage: die Tastenbelegungen sind von der Shell unabhängig.

Markus
broecker
broecker Sep 04, 2013 updated at 19:10:00 (UTC)
Goto Top
Automatisches Suchen und Ersetzen im ganzen Text oder Zeilenbereich nutze ich häufig: :%s/henne/ei/g oder auch :VON,BISs/henne/ei/g - auch schon zusammengesetzt
HG
Mark
Alchimedes
Alchimedes Sep 10, 2013 updated at 21:55:13 (UTC)
Goto Top
Hallo Broecker ,

die sed Befehle funzen so nicht.... ich geh davon aus das ueber Du vi(m) -> / %s/henne/ei/g benutzt hast ?

Weil uber das Slashzeichen im Text suchen geht, aber ersetzen geht nicht...

also ins Terminal gekloppt:

vim test

Hallo das ist ein test
:x!

vim test

Hallo das ist ein test ( befinden uns im Komandomodus )
/%/Hallo/Hello/g
( Enter.... es passiert nichts... wo ist da der Denkfehler ? )

Gruss
64748
64748 Sep 11, 2013 at 03:07:11 (UTC)
Goto Top
Zitat von @Alchimedes:
Hallo Broecker ,

die sed Befehle funzen so nicht.... ich geh davon aus das ueber Du vi(m) -> / %s/henne/ei/g benutzt hast ?

Weil uber das Slashzeichen im Text suchen geht, aber ersetzen geht nicht...

also ins Terminal gekloppt:

vim test

> Hallo das ist ein test
> :x!

vim test

> Hallo das ist ein test ( befinden uns im Komandomodus )
> /%/Hallo/Hello/g
( Enter.... es passiert nichts... wo ist da der Denkfehler ? )

Gruss
Um das nochmal klar zu stellen: Suche mit / und ersetzten geht mit : (beides im Kommandomodus).

% bei der Suche bedeutet "alle Zeilen", sonst n,m für "Zeile n bis m", dabei ist n,$ "von n bis zum Dateiende", also
:51,$s/Hallo/Hello/ 
ersetzt jeweils das erste Vorkommen in der Zeile von Zeile 51 bis zum Dateiende.

Markus
Alchimedes
Alchimedes Sep 12, 2013 at 15:42:24 (UTC)
Goto Top
Hallo Markus ,

Danke fuer den Hinweis !

Ich Schussel....

Gruss