vim suchen wie in emacs

3

Gibt es eine Möglichkeit, in Vim wie in Emacs zu suchen?

Nehmen wir genauer an, ich beginne die Suche mit aktivierter inkrementeller Suche. Der Cursor springt zum ersten Treffer. Ich drücke die Eingabetaste und dann 'n', um zum nächsten Spiel zu gelangen. Jetzt möchte ich meinem ursprünglichen Suchausdruck einige Zeichen hinzufügen und nach der nächsten Übereinstimmung suchen. Ich kann dies nicht tun, da der Fokus nach dem Drücken der Eingabetaste den Suchbegriffbereich verlässt.

Das Emacs-Äquivalent wäre ctrl-s blah ctrl-s ha. Und am Ende würde ich nach dem Begriff "blahha" suchen.

Ist das sinnvoll? Ist es möglich?

Bearbeiten

Die ideale Situation wäre, etwas wie / blah <CS> zu tun und es sofort zum zweiten Vorkommen von 'blah' springen zu lassen, während der Fokus im Suchpuffer bleibt.

Wacholder-
quelle
Warum abstimmen?
Wacholder
Zum Thema Suchverfeinerung möchten Sie vielleicht einen Blick darauf werfen q/. Siehe :h q/für weitere Informationen. Auch gibt es einen schönen Vimcast zu diesem Thema. vimcasts.org/episodes/…
Peter Rincker

Antworten:

5

Das Nächste, was mir auf den ersten /<C-R>/Blick einfällt, ist, den neuen Text anzuhängen. /Öffnet das Suchdialogfeld und <C-R>ermöglicht das Einfügen aus einem Ihrer Register. Das /Register ist der vorherige Suchpuffer, der den neuesten Suchtext enthält.

Wenn Sie feststellen, dass Sie dies häufig tun, können Sie beispielsweise eine Zuordnung dazu vornehmen

nnoremap <leader>/ /<C-R>/

Wie ich in dem anderen Kommentar erwähnt habe, können Sie Ihrem vimrc etwas Ähnliches hinzufügen, wenn Sie im Suchpuffer bleiben möchten. Ich denke das bringt dir was du willst.

cnoremap <C-S> <CR>/<C-R>/
Alex
quelle
Ich bin wahrscheinlich dumm, aber das funktioniert bei mir nicht.
Wacholder
<C-R>hier bedeutet gleichzeitig control + R. Wenn das nicht funktioniert, bin ich ein bisschen überrascht. Ich denke, Toms Antwort ist wahrscheinlich sowieso besser.
Alex
Jep. Ich bin dumm. Ich habe Control-R gedrückt, aber danach nicht das '/' gedrückt. Süßer Trick. Vielen Dank!
Wacholder
Die vorgeschlagene Bearbeitung funktioniert nicht. Wenn Sie im Suchpuffer auf CS drücken, geschieht nichts.
Wacholder
1
<C-s>wird oft vom Terminal gegessen.
Romainl
8

/<Up>oder /<C-P>bringt Sie zu Ihrer vorherigen Suche und Sie können danach weiter tippen, um sie anzufügen. Sie können :nnoremap / /<Up>vimrc hinzufügen , wenn dies Ihr Standardverhalten sein soll.


quelle
Dies funktioniert, aber es ist immer noch ein Tastendruck mehr als das Ideal. Ich muss immer noch die Eingabetaste
drücken
Versuchen Sie cnoremap <C-S> <cr>/<up>, Ihrem vimrc etwas hinzuzufügen. Ich denke, das wird das tun, wonach du fragst.
Alex
Die .vimrc-Änderung macht nicht viel. Das gleiche gilt für Alex. Vielleicht wird mein CS nicht als solches erkannt. Oder ich platziere es nicht an der richtigen Stelle, obwohl es genau zwischen zwei Nicht-Karten-Richtungslinien liegt.
Wacholder
Danke für die Hilfe!! Funktioniert mit <CL>. Dies wäre die beste Zeit für ein Double-Accept-Feature: - / Sie haben leider einen Münzwurf verloren.
Juniper
Möglicherweise wird <CS> erneut dem Speicher zugewiesen (z. B. unter Windows und mit dem Standard-Setup). Sie können Ihre Zuordnungen überprüfen, indem Sie:map <C-S>
dash-tom-bang