2013-05-15 10 views
6

Ich frage mich, ob es eine Möglichkeit gibt, ein Muster zu finden, aber es auf die aktuelle Zeile zu beschränken. Grundsätzlich ist das Äquivalent von /PATTERN aber auf die aktuelle Zeile beschränkt, anstatt das gesamte Dokument.Vim - Finde Muster auf der aktuellen Zeile NUR

Ich habe versucht :s/PATTERN, aber das löscht das Muster aus der Zeile und platziert meinen Cursor am Anfang der Zeile, was überhaupt nicht ist, was ich brauche. Ich hatte gehofft, Sie könnten ohne Ersatz suchen ...

Ich hoffe, dies für ein Makro zu verwenden, um meinen Cursor an den Anfang dieses Musters zu platzieren, als würde passieren, wenn Sie /PATTERN auf die gesamte Datei tun, also ist alles, was makrofreundlich ist, noch besser.

Irgendwelche vim Benutzer da draußen, die vielleicht eine Idee haben?

EDIT: 0/PATTERN in einem Makro würde für meine aktuelle Notwendigkeit arbeiten, aber ich hoffe, es gibt eine genauere Möglichkeit, die Suche zu beschränken. ANTWORT: Bis jetzt gibt es ein paar Möglichkeiten, aber die, die ich am besten mag, ist Shift+V, um die aktuelle Zeile visuell auszuwählen, gefolgt von /\%V, um nur in der visuellen Auswahl zu suchen. Dann wird Shift+V wieder den visuellen Modus ausschalten.

+0

Mein Wissen über Makro ist begrenzt, aber interaktiv, Sie können die aktuelle Zeile mit 'Shift + V' auswählen und dann'/search'. – joon

+0

Das hat funktioniert.Wenn du das als Antwort posten willst, kann ich es akzeptieren. Ich habe 'Shift + V/\% VPATTERN' und es funktioniert – Austin

Antwort

7

Mein Wissen über Makro ist begrenzt, aber interaktiv, können Sie aktuelle Zeile mit Shift + V wählen, und dann tun /\%Vsearch (siehe http://vimdoc.sourceforge.net/htmldoc/pattern.html#/ \% V).

+1

Das ist wahrscheinlich mein Favorit. Ich wusste nicht, dass \% V im normalen/Suchmodus funktioniert! Wird sehr hilfreich sein, um den Suchraum einzuschränken. – Austin

+0

Dies funktioniert nicht in allen Fällen. Es ist ziemlich genau das selbe wie '/ search' ohne visuellen Zeilenmodus –

+0

Müssen Sie' \% V' verwenden, sonst ist diese Antwort falsch –

0

Sie können ohne Ersatz suchen

:s/PATTERN//gc 

Dann n drücken mit dem Ersatz zu überspringen. Wenn das Muster nicht gefunden wird, werden Sie nicht einmal gefragt.

Sie können auch nur die aktuelle Zeile oder den Zeilenbereich markieren.

7
/\%9lsearch 

Wo \%9 bedeutet Zeilennummer 9.

Typing in der Zeilennummer ist immer noch ein bisschen lahm. Sie können ctrl + r= von einem vim Ausdruck gefolgt und geben Sie den vim Ausdruck auszuwerten und dessen Ausgang ein. line('.') wird die Zeile des Cursors zurückgeben.

In einem kompletten Schritt

/\%<c-r>=line('.')<cr>lsearch 

Weitere Hilfe finden Sie unter:

:h /\%l 
:h i_CTRL-R 
+0

Können Sie das weiter ausführen? Ich habe es ausprobiert und ich bin 100% sicher, dass ich es nicht richtig betrete. Vielleicht zeigen, wie dieser Einzelschrittansatz funktioniert? Es sieht hilfreich aus, aber ich kann es nicht zur Arbeit bringen. – Austin

4

versuchen erste Zeichen des Musters zu finden, indem

f <letter> 

eingeben Es ist nicht genau das, was Sie brauchen, aber können das Problem lösen helfen.

Verwandte Themen