Suche…
Suchen
Zu den Charakteren springen
f {char} - zum nächsten Vorkommen von {char} rechts vom Cursor in derselben Zeile springen
F {char} - zum nächsten Vorkommen von {char} links vom Cursor in derselben Zeile springen
t {char} - Bewegen Sie sich nach dem nächsten Vorkommen von {char} rechts neben dem Cursor in derselben Zeile
T {char} - Bewegt sich nach dem nächsten Vorkommen von {char} links vom Cursor in derselben Zeile
Zwischen den 'Ergebnissen' vorwärts / rückwärts springen über ; und.
Weiterhin können Sie mit /<searchterm>
Enter nach ganzen Wörtern suchen.
Suche nach Zeichenketten
* - zum nächsten Vorkommen des Wortes unter dem Cursor wechseln
# - Bewegen Sie sich zum vorherigen Vorkommen des Wortes unter dem Cursor
/ searchterm
Enter bringt Sie zum nächsten Treffer (Vorwärtssuche). Wenn du verwendest ? Statt / geht die Suche rückwärts.
Springe zwischen den Matches über n (weiter) und N (vorher).
Um Ihre vorherigen Suchen anzuzeigen / zu bearbeiten, geben Sie / ein und drücken Sie die Aufwärtspfeiltaste .
Hilfreich sind auch diese Einstellungen: (Anmerkung :se
ist gleich :set
)
-
:se hls
hlls HighLightSearch, hebt alle Suchtreffer hervor; use:noh
zum vorübergehenden Ausschalten der Suche / Markierung von Markierungen (:set noh
oder:set nohls
schaltet aus.) -
:se is
oder:set incs
schaltet die inkrementelle Suche ein, der Cursor springt automatisch zum nächsten Treffer. (:se nois
schaltet sich aus.) -
:se ic
IgnoreCase", schaltet die Groß- / Kleinschreibung aus. (:se noic
schaltet sich wieder ein.) -
:se scs
SmartCaSe, kann verwendet werden, wenn IgnoreCase eingestellt ist; macht Fall (in) Empfindlichkeit smart! zB/the
für die Suchethe
,The
,ThE
usw. während/The
nur für aussehenThe
.
Grundlegende Bewegung
Bemerkungen
- Jede Bewegung kann nach einem Bedienerbefehl verwendet werden, sodass der Befehl den Text bearbeitet, der in der Reichweite der Bewegung enthalten ist.
- Bewegungen können, genau wie Bedienerbefehle, eine Zählung enthalten, so dass Sie sich beispielsweise um zwei Reihen bewegen können.
Pfeile
In Vim funktionieren die normalen Pfeiltasten ( ← ↓ ↑ → ) wie erwartet. Doch für die Touch-typers, dann ist es einfacher , die h j k l alternativen Schlüssel zu verwenden. Bei einer typischen Tastatur befinden sie sich nebeneinander in derselben Reihe und sind mit der rechten Hand leicht zugänglich. Die Mnemonic-Technik, um sich zu erinnern, welche davon welche ist, geht folgendermaßen
- h / l - diese befinden sich "am weitesten links / rechts" unter den vier Buchstaben der Tastatur, sie entsprechen also "links / rechts gehen";
- j - Das Kleinbuchstabe "j" wird wie typische Pfeile unter den typischen Buchstaben "nach unten" gesetzt - es entspricht also "nach unten".
- k - Umgekehrt wird bei Kleinbuchstaben "k" der "Aufstieg" über typische Buchstaben wie ein kleiner Zeiger "angehoben" - es entspricht also "Aufsteigen".
Grundbewegungen
Alle folgenden Befehle sollten im normalen Modus ausgeführt werden .
Befehl | Beschreibung |
---|---|
h oder links | [count] Zeichen nach links gehen |
j oder runter | go [count] Zeichen unten |
k oder höher | go [count] Zeichen oben |
l oder richtig | [count] Zeichen nach rechts gehen |
gg | gehe in die erste Zeile oder [count] 'th Zeile, falls gegeben |
H | Gehen Sie zur ersten Zeile im sichtbaren Bildschirm |
M | Gehen Sie zur mittleren Zeile im sichtbaren Bildschirm |
L | Gehen Sie zur letzten Zeile im sichtbaren Bildschirm |
G | gehe in die letzte Zeile oder [count] 'th Zeile, falls gegeben |
Zuhause oder 0 | gehe zum ersten Zeichen der Zeile |
^ | gehe zum ersten nicht leeren Zeichen der Zeile |
+ | Gehen Sie eine Zeile nach unten zum ersten nicht leeren Zeichen |
- | gehe eine Zeile hoch zum ersten nicht leeren Zeichen |
$ oder Ende | gehe zum Ende der Zeile (wenn [count] angegeben ist, gehe [count - 1] Zeilen nach unten) |
| | gehe zum [count] -ten Zeichen oder zum Anfang der Zeile, wenn count nicht angegeben ist |
f {char} | gehe zu [count] th Vorkommen von {char} nach rechts inklusive |
F {char} | gehe zu [count] th Vorkommen von {char} nach links inklusive |
t {char} | Gehen Sie zu [count] 'th Vorkommen von {char} zum rechten Exklusivwert |
T {char} | Gehen Sie zu [count] 'th Vorkommen von {char} zum exklusiven Link |
; | Wiederholen Sie die letzten f , t , F oder T [count] -Zeiten |
. | Wiederholen Sie den letzten f , t , F oder T in der entgegengesetzten Richtung [count] mal |
w | gehe zum Anfang des nächsten Wortes |
b | gehe zum Anfang des vorherigen Wortes |
e | gehe zum Ende des nächsten Wortes |
ge | zum Ende des vorherigen Wortes gehen |
% | zu passenden Paaren gehen, zB (), [], {} , /* */ oder #if, #ifdef, #else, #elif, #endif |
{ } | vorheriger / nächster Absatz |
[{ ]} | Anfang / Ende des Blocks |
'{verkohlen} | Gehe zur Markierung (Markiere mit m {char} ) |
<CB> <CF> | vorherige / nächste Seite |
<CO> <CI> | Gehe zurück oder vorwärts in der "Sprungliste" (erfordert jumplist Funktion, siehe :help jumps ) |
Hinweis: b , e und w betrachten ein Wort standardmäßig als Buchstaben, Zahlen und Unterstriche (dies kann mit der Einstellung iskeyword
konfiguriert werden). Jede dieser Optionen kann auch groß geschrieben werden, sodass sie alles überspringen, das nicht auch Leerzeichen ist.
Hinweis: Vim erkennt zwei Arten von Bewegung: Operator Bewegung ( :help movement
) und Sprünge ( :help jumplist
). Bewegungen, wie sie mit g
( gg
, G
, g,
) ausgeführt werden, gelten als Sprünge, ebenso wie Änderungen. Änderungen erhalten ihre eigene Jumplist, die wie oben erwähnt über g,
und g;
navigierbar ist g;
(Siehe :help changelist
). Sprünge werden von Vim nicht als Bewegungsbefehle behandelt
Wenn Sie sich über Zeilen nach oben oder unten bewegen, behält der Cursor seine Spalte wie erwartet. Wenn die neue Zeile zu kurz ist, springt der Cursor zum Ende der neuen Zeile. Wenn sich die Spalte außerhalb des Zeilenendes befindet, wird der Cursor am Zeilenende angezeigt. Die anfängliche Spaltennummer bleibt erhalten, bis eine Aktion zum Ändern (z. B. Bearbeiten von Text oder explizites Verschieben von Spalten) ausgeführt wird.
Wenn die Länge einer Zeile die Breite des Bildschirms überschreitet, wird der Text umbrochen (in den Standardeinstellungen kann dieses Verhalten konfiguriert werden). Fügen Sie g vor dem üblichen Befehl ein, um sich durch die auf dem Bildschirm angezeigten Zeilen und nicht durch Zeilen in der Datei zu bewegen. Zum Beispiel bewegt gj den Cursor an die Position, die eine Zeile unter seiner aktuellen Position angezeigt wird, auch wenn sich diese in derselben Zeile der Datei befindet.
Muster suchen
Vim unterstützt die Verwendung regulärer Ausdrücke beim Durchsuchen einer Datei.
Das Zeichen, das angibt, dass Sie eine Suche durchführen möchten, ist /
.
Die einfachste Suche, die Sie durchführen können, ist die folgende
/if
Dadurch wird die gesamte Datei nach allen Instanzen von if
durchsucht. Bei unserer Suche if
handelt es sich jedoch eigentlich um einen regulären Ausdruck, der mit jedem Vorkommen des Wortes übereinstimmt, if
die Wörter innerhalb anderer Wörter handelt.
Zum Beispiel würde unsere Suche sagen, dass die folgenden Wörter zu unserer Suche passen: if
, spiffy
, endif
usw.
Wir können kompliziertere Suchen durchführen, indem Sie kompliziertere reguläre Ausdrücke verwenden.
Wenn unsere Suche war:
/\<if\>
dann würde unsere Suche nur dann exakte Übereinstimmungen mit dem vollständigen Wort zurückgeben, if
. Das oben genannte " spiffy
und " endif
würde von der Suche nur if
, if
.
Wir können auch Bereiche verwenden. Gegeben eine Datei:
hello1
hello2
hello3
hello4
Wenn Sie nach den Zeilen suchen möchten, die "Hallo" gefolgt von einer Ziffer zwischen 1 und 3 enthalten, würden wir sagen:
/hello[1-3]
Ein anderes Beispiel:
/(?:\d*\.)?\d+
würde alle Integer- und Dezimalzahlen in der Datei finden.
Zum Anfang eines bestimmten Wortes navigieren
Beim Bearbeiten von Text ist es üblich, zu einem bestimmten Wort auf dem Bildschirm zu navigieren. In diesen Beispielen untersuchen wir, wie wir zu dem updated
Wort navigieren können. Aus Gründen der Beständigkeit in allen Beispielen wollen wir auf dem ersten Buchstaben des Wortes landen.
Mid-Screen-Sprung
M $ B
Dieser Ansatz ist schnell und verwendet nur 3 Tastenanschläge. Der Nachteil ist jedoch, dass es nicht sehr allgemein ist, da unsere Ziellinie normalerweise nicht in der Mitte des Bildschirms liegt. Trotzdem ist es eine nützliche Bewegung, wenn Sie weniger granulare Bewegungen ausführen.
Mit einer Zählung
3j f u ; ;
Auf den ersten Blick erscheint dies aufgrund der Anzahl der Tastatureingaben als Rückschritt vom ersten Ansatz. Da wir hier jedoch eine Zählung anstelle von M verwenden , ist dies flexibler. Wir können schnell die richtige Anzahl ermitteln, die verwendet werden soll, wenn die relative number aktiviert ist. Um zum Zielwort zu gelangen, verwenden Sie f in Kombination mit ; kann überraschend effektiv sein - und sicherlich besser als wiederholt w drücken. Wenn Sie Ihr Ziel mit überschießen ; , Können Sie gehen nach hinten mit.
Explizite Suche
/ up Geben Sie n n ein
Die Navigation über / kann sehr leistungsfähig sein. Wir können oft direkt zu unserem Zielwort springen, indem wir es eingeben. Hier tippen wir nur die ersten beiden Zeichen ein, in der Hoffnung, dass es eindeutig zu unserem Wort passt. Leider gibt es mehrere Matches, aber wir können mit n schnell zum nächsten Match springen.
Implizite Suche
/ Y Raum Geben Sie w
In einigen Fällen ist es möglicherweise effizienter, in die Nähe unseres Ziels zu springen, als direkt darauf zu zielen. Hier stellen wir fest, dass sich neben dem Ziel ein selten vorkommender Buchstabe y
befindet. Wir können unserem Suchbegriff ein Leerzeichen hinzufügen, um die Wahrscheinlichkeit zu verringern, dass wir einen anderen y
Charakter treffen. Dies kann auch mit f {char} wie im Beispiel Using a count verwendet werden .
Verwenden von Markierungen zum Bewegen
Marken sind wie Lesezeichen; Sie helfen Ihnen, Orte zu finden, an denen Sie bereits waren.
TLDR
Setzen Sie sie mit m{a-zA-Z}
in den Normalmodus und springen Sie mit '{a-zA-Z}
(einfaches Anführungszeichen) oder `{a-zA-Z}
(Backtick) im Normal- oder visuellen Modus. Kleinbuchstaben stehen für Marken innerhalb eines Puffers, Großbuchstaben und Ziffern sind global. Sehen Sie Ihre aktuell gesetzten Marken mit :marks
und weitere Informationen finden Sie unter :help mark
.
Eine Marke setzen
Vims integrierte Hilfe sagt:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
Die Markierung verfolgt, an welcher Zeile und Spalte sie platziert wurde. Es gibt keine visuelle Bestätigung, dass eine Marke gesetzt wurde oder ob eine Marke einen vorherigen Wert hatte und überschrieben wurde.
Springe zu einer Marke
Vims integrierte Hilfe sagt:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtick verwendet die Spaltenposition, nicht jedoch das einfache Anführungszeichen. Der Unterschied zwischen ihnen erlaubt es Ihnen einfach, die Spaltenposition Ihrer Marke zu ignorieren, wenn Sie möchten.
Sie können im visuellen Modus zusätzlich zum normalen Modus zwischen nicht-globalen Marken wechseln, um Text basierend auf Marken auswählen zu können.
Globale Markierungen
Globale Markierungen (Großbuchstaben) ermöglichen das Springen zwischen Dateien. Das bedeutet, wenn zum Beispiel die Markierung A
in foo.txt
, dann von bar.txt
(irgendwo in meinem Dateisystem), wenn ich zur Markierung A
springe, wird mein aktueller Puffer durch foo.txt
. Vim fordert Sie zum Speichern der Änderungen auf.
Ein Sprung zu einer Marke in einer anderen Datei wird nicht als Bewegung betrachtet, und visuelle Auswahlen (unter anderem) funktionieren nicht wie ein Sprung zu Marken innerhalb eines Puffers.
Um zur vorherigen Datei (in diesem Fall bar.txt
) zurückzukehren, verwenden Sie :b[uffer] #
(d. :b[uffer] #
:b#
oder :buffer#
).
Hinweis:
Besondere Kennzeichen
Es gibt bestimmte Markierungen, die Vim automatisch setzt (die Sie selbst überschreiben können, aber wahrscheinlich nicht müssen).
Zum Beispiel (umschrieben von Vims Hilfe):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
Mehr von Vims eingebauter Hilfe:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
Darüber hinaus sind die Zeichen (
, )
, {
und }
Marken, die an die gleiche Stelle springen wie ihre Normalmodusbefehle - das heißt, '}
führt im Normalmodus dasselbe aus wie }
.
Springe zu einer bestimmten Zeile
Um zu einer bestimmten Zeile mit Doppelpunktnummer zu springen. Um zur ersten Zeile einer Datei zu springen, verwenden Sie
:1
Um zu Zeile 23 zu springen
:23