Vim: Wie können Sie effizient nach Text suchen?

30

Wann immer Sie in vim nach Text suchen möchten, geben Sie /und dann die Zeichenfolge ein, nach der Sie suchen.

Wenn die Zeichenfolge jedoch lang ist und Sie dies mehrmals tun möchten, gibt es eine Möglichkeit, dies zu tun, sodass Sie nicht /andthisreallylongstringmehr als einmal eingeben müssen?

Dunkler Templer
quelle
12
Ich empfehle Ihnen, ein Vim- Spickzettel oder Vim-Tipps kurz durchzulesen - Sie können viele andere Möglichkeiten finden, um mehr aus Vim herauszuholen.
RedGrittyBrick
Protip: Es gibt Texteditoren für Linux, für deren Verwendung nicht wochenlanges Lernen erforderlich ist.
BlueRaja - Danny Pflughoeft
4
@BlueRaja: Ich bin mir nicht sicher, ob dies ein guter Ort für einen Editorenkrieg ist. Auch für einen Betriebssystemkrieg gibt es nette und benutzerfreundliche Texteditoren für Windows oder Mac OS. Wenn Sie lernen, wie Sie mit einem Editor effizient arbeiten, werden Sie am Ende wahrscheinlich effizienter als wenn Sie sich an die grundlegenden Funktionen halten.
Benoit

Antworten:

61

Drücken Sie "n", nachdem Sie eine Suche abgeschlossen haben, dann wird die vorherige Aktion (Suche) wiederholt.

lamwaiman1988
quelle
12
Außerdem Nwird zum vorherigen Ergebnis gewechselt.
Jin
15
/
Wenn Sie
6
Außerdem q/wird ein bearbeitbares Fenster mit allen aktuellen Suchbegriffen angezeigt.
UncleZeiv
7
Wenn /Sie die Eingabetaste drücken, wird die vorherige Suche wiederholt. Wenn ?Sie drücken und die Eingabetaste drücken, wird die vorherige Suche rückwärts wiederholt.
Andy Lester
3
/Ctrl-Fist eine Alternative q/, die eine einfachere Gedächtnisstütze sein kann (Strg-F == Finden). Wie q funktioniert es auch im Befehlsmodus.
idbrii
34

Befindet sich die von Ihnen gesuchte Zeichenfolge unter dem Cursor, können *Sie vorwärts oder #rückwärts danach suchen.

Didier Trosset
quelle
19

Wie ich normalerweise suche, ist so etwas wie;

  1. Drücken Sie '/'
  2. Geben Sie einen Suchbegriff ein
  3. Drücken Sie Enter
  4. Verwenden Sie 'n' und 'N', um innerhalb der Suche vorwärts und rückwärts zu navigieren.

Vim speichert einen Verlauf Ihrer Suchanfragen. Wenn Sie frühere Suchanfragen benötigen, können Sie '/' drücken und die Tasten AUF und AB oder <Strg-P> <Strg-N> verwenden, um den Suchverlauf zu durchsuchen.

Sie können auch '?' statt '/' rückwärts suchen.

Ich benutze auch gerne:

set ignorecase smartcase

Bei der Suche wird nur zwischen Groß- und Kleinschreibung unterschieden, wenn die Suchzeichenfolge Großbuchstaben enthält.

Valadas
quelle
15

Zwei zusätzliche Tipps, die Ihre Suche effizienter machen können, sind set hlsearchund set incsearch.

  • set hlsearchhebt Ihre Suchergebnisse hervor. Tippe :noh, um sie auszuschalten, wenn du sie nicht mehr brauchst.

  • set incsearch Aktiviert die inkrementelle Suche.

    Extrahiert aus :help incsearch

    Zeigen Sie während der Eingabe eines Suchbefehls, wo das bisher eingegebene Muster übereinstimmt. Die übereinstimmende Zeichenfolge wird hervorgehoben. Wenn das Muster ungültig oder nicht gefunden ist, wird nichts angezeigt. Der Bildschirm wird häufig aktualisiert, dies ist nur bei schnellen Terminals sinnvoll.

    Ohne incsearchwerden Ihre Ergebnisse erst angezeigt, wenn Sie <CR>auf Ihren Suchbegriff klicken.

    Beispiel:

    Sie möchten suchen nach wildignore

    Bildbeschreibung hier eingeben

    Sie tippen /wildund die erste Übereinstimmung wird automatisch hervorgehoben.

    Bildbeschreibung hier eingeben

    Dann tippe iund es geht weiter zum nächsten korrekten Spiel.

    Bildbeschreibung hier eingeben

Jin
quelle
13

Ein weiterer Tipp, der noch nicht behandelt wurde: Wenn Sie die Zeichen qund dann drücken /, wird eine Liste Ihrer vorherigen Suchbegriffe angezeigt. Sie können sie wie jede andere Zeile in einem Dokument bearbeiten und anschließend die Eingabetaste drücken, um sie für eine neue Suche erneut zu verwenden.

Marcin
quelle
3
Hab danach gesucht. Dies ist ein wichtiger Hinweis und sehr thematisch.
Cincodenada
8

Nachdem Sie gedrückt haben /, um die Suche zu starten, können Sie mit dem Aufwärtspfeil durch den Suchverlauf blättern.

Sie können einen regulären Ausdruck eingeben, um zu vermeiden, dass Sie den gesamten Suchbegriff eingeben müssen: and.*longstring

Graham Borland
quelle
7

Funktioniert es bei Ihnen nicht, einfach nur / ohne Argumente zu treffen? Auf allen unseren Systemen wird die zuletzt durchgeführte Suche wiederholt.

Kyle Banerjee
quelle
6

Es gibt ein schönes Muster, dem Sie folgen können, um nach Text mit Ruck zu suchen . Dann müssen Sie nicht einmal das Wort selbst eingeben, wenn Sie mit anderen Mitteln als einer Suche dorthin navigiert haben. Zusammenfassend gesagt, wenn Sie das erste Zeichen des Wortes haben, nach dem Sie suchen möchten:

v
e
y
/
Ctrl-r
0
Enter

(dann weiter mit n oder N)

Allerdings *(oder #) erfüllt so ziemlich die gleichen wie all diese Befehle. Der einzige Unterschied besteht darin, dass Sie flexibel sein können, indem Sie festlegen, wie viel von dem Wort Sie angeben (statt e können Sie bis zum Ende des Wortes so viel auswählen, wie Sie möchten, z. B. 9 l).

Benedikt
quelle
1
  • /string - Vorwärts nach Zeichenfolge suchen
  • ?string - Suchen Sie zurück nach Zeichenfolge
  • n - Suchen Sie nach der nächsten Instanz der Zeichenfolge
  • N - Suchen Sie nach der vorherigen Instanz der Zeichenfolge
AbdulFattah Popoola
quelle
1

Viel Zeit beim Programmieren werde ich suchen wollen aVeryLongVariableNameInTheProgram.

In vim können Sie sehr einfach Text in einen Puffer / ein Register ziehen und danach suchen:

  • Setzen Sie den Cursor auf das erste Zeichen des Wortes
  • "Bywum Text aVeryLongVariableNameInTheProgramin den Buffer zu ziehen (wähle deinen Favoriten, ich habe B benutzt)
  • /^RB (Schrägstrich, Strg-R, B), um Puffer B in die Suchzeile einzufügen

Natürlich können Sie auch bis zum Zeilenende usw. ziehen, anstatt ein einzelnes Wort zu ziehen - ich verwende einfach die oben genannte Sequenz die ganze Zeit.

Dan7119
quelle
1

Zusätzlich können Sie den Inhalt eines Registers in die Suchabfrage einfügen, indem Sie Ctrl+ Rund dann den Namen des Registers drücken , z. B. / Ctrl+ R0 Enter.

tdammers
quelle
Ich denke dir ein Wort.
Dotancohen
0

Entspricht die lange Zeichenfolge, die Sie eingeben, einem Variablennamen? Oder eine lange Zeichenfolge, die in Ihrem Text enthalten ist? Drücken Sie dann *, um nach dem Wort / der Zeichenfolge unter Ihrem Cursor zu suchen.

Andy Lester
quelle