Wie mache ich ein Suchen und Ersetzen innerhalb einer Auswahl in vi
?
Wie mache ich ein Suchen und Ersetzen innerhalb einer Auswahl in vi
?
Antworten:
Wählen Sie den Text im visuellen Modus aus (ich nehme an, Sie tun dies) und drücken Sie :
, um einen Befehl einzugeben. In der Befehlszeile wird Folgendes angezeigt:
:'<,'>
Das bedeutet, dass der Befehl auf die Auswahl angewendet wird. Geben Sie dann ein s/search/replace/
und drücken Sie die Eingabetaste. (Fügen Sie g
nach dem dritten Schrägstrich einen hinzu, wenn Sie alle Übereinstimmungen ersetzen möchten, und einen, c
wenn Sie für jede Ersetzung eine Bestätigung wünschen.)
Die meisten anderen hier vorgeschlagenen Lösungen funktionieren über die GESAMTE Zeile, in der die Auswahl erfolgt, was möglicherweise nicht Ihren Wünschen entspricht.
Um NUR in der Auswahl zu suchen und zu ersetzen, wählen Sie zuerst den Text visuell aus und verwenden Sie dann einen Befehl wie folgt:
:%s/\%VSEARCH/REPLACE/g
Dadurch wird nur im visuell ausgewählten Bereich gesucht und ersetzt, wobei SEARCH durch REPLACE ersetzt wird. Wenn Sie mehr als eine Zeile ausgewählt haben, funktioniert dies auch über mehrere Zeilen.
:%s/\%V /\r/g
ohne Freude. Das erste Leerzeichen wird ersetzt, die folgenden 4 bleiben jedoch unberührt.
Wenn Sie zur Auswahl den visuellen Modus verwendet haben, dann:
:'<,'>s/regex/replacement/options
VIM platziert den Bereich ( '<,'>
) automatisch, wenn Sie ':'
im visuellen Modus (durch Drücken ) in den Befehlszeilenmodus wechseln.
<
beginnt und wo sie >
endet. Vielleicht ist es möglich, dass es mit dem \%'>
Atom funktioniert . Aber meine ersten Experimente sind fehlgeschlagen.
Weitere Hilfe hier Suchen und Ersetzen in einer visuellen Auswahl
Wenn Sie eine globale Suche und Ersetzung (mit optionalen regulären Ausdrücken) für alle Instanzen in der Datei durchführen möchten, würde ich Folgendes tun:
:%s/foo/bar/g
Lassen Sie das g weg, um einen lokalen Austausch durchzuführen.