Gibt es eine Suche nach dem Ersetzen-Befehl?


12

Die incsearchFunktionalität von Vim gefällt mir sehr gut . Gibt es eine Möglichkeit, es oder etwas ähnliches zu verwenden, während ich einen Ersatz mache?

Wenn ich zum Beispiel im normalen Modus tippe:

:%s/potato/

Kann ich alle potatos in meiner Datei hervorheben lassen, so wie sie hervorgehoben werden, incsearchwenn ich schreibe?

/potato

?

Dies würde mir schon bei der Verwendung von regulären Ausdrücken sehr helfen. Ein sehr sehr nettes Geschenk wäre, wenn ich dies schreibe:

:%s/potato/banana/

Es würde das potatos durch bananas ersetzen und hervorheben - vielleicht sollten die Ersetzungen in einer anderen Farbe sein. Die Änderung sollte jedoch erst "festgeschrieben" werden, nachdem ich die Eingabetaste gedrückt habe.

Ich benutze im Moment Neovim, falls es hilft.


1
Meinst du incsearch? hlsearchSollte ootb funktionieren, wenn ich tippe, :%s/potato/\0/um potatodurch sich selbst zu ersetzen , dann sehe ich alle Übereinstimmungen hervorgehoben.
Jjaderberg

Inded, ich meinte incsearch. Ersetzt in meiner Frage, danke.
Kikito

Es ist wahrscheinlich nicht koscher, :/pattern<CR>funktioniert aber einwandfrei. Fügen Sie dann% s und die Ersetzungszeichenfolge hinzu. Dann wird die Suche noch einmal verfeinert und mit STRG-R / zum Einfügen in den Suchteil von:%s/
Steve

An @jjaderberg anhängen: Damit :%s/potato/carrot/ckönnen Sie durch Ihre Ersetzungen springen ("bestätigen") (Hinzufügen g, um alle Instanzen in derselben Zeile zu ersetzen), und hlsearchSie werden sie im Voraus sehen.
Rolf

Antworten:


9

Nach einigem Suchen fand ich diese NeoVim-Ausgabe , die wiederum von dieser PR geschlossen wurde und mich zum inccommandSetting brachte. Dies meiner Konfigurationsdatei hinzufügen:

set inccommand=nosplit

lässt NeoVim sich fast genau so verhalten, wie ich es in meiner Frage gefordert habe. Ich habe kein Äquivalent für reguläre Vim gefunden, aber ich habe nicht sehr energisch danach gesucht.


4
In Ihrer situtaion, für incsearchin Substitutionen (einen faulen Vimmer und langsam zu sein neo Dinge zu übernehmen) würde ich wahrscheinlich für Kartoffel (Suche /potato) genießt gewöhnliche inkrementelle Suche highlighighting, und dann mit einer leeren Suche ersetzen: %s//banana. Aber ich weiß nicht, wie es set inccommand=nosplitin anderer Hinsicht zu vergleichen ist.
jjaderberg

Vielen Dank! Ich kannte den "leeren Suchtrick" nicht. Ich werde versuchen, mich daran zu erinnern, wenn ich auf meinen Servern bin
kikito

1
@jjaderberg übrigens hat mir die inccommandEinstellung so gut gefallen , dass ich ein Asciinema gemacht habe, das es bei der Arbeit zeigt, falls es Sie dazu motiviert, es mit Neovim zu versuchen: asciinema.org/a/3lzlyzn23c52wwp9mk644ft20
kikito

2
@jjaderberg Ich denke, das ist eine Antwort wert.
Rich

Leider ist der Link zum Asciinema jetzt tot.
Sonntag,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.