Ich denke, es würde nur funktionieren, wenn kein '. *' Im Muster verwendet wird
AK
10
Sie müssen die Zeichenfolge nicht wiederholen, tun Sie es einfach %s/string//ng.
Slm
23
(ähnlich wie Gustavo sagte, aber zusätzlich :)
Für jede vorherige Suche können Sie einfach Folgendes tun:
:%s///gn
Ein Muster wird nicht benötigt, da es sich bereits im Suchregister befindet (@/ ).
"%" - s/in der gesamten Datei
"g" ausführen - global suchen (mit mehreren Treffern in einer Zeile)
"n" - verhindert jegliches Ersetzen von s/- nichts wird gelöscht! nichts darf rückgängig gemacht werden!
(siehe: :help s_flagfür weitere Informationen)
(Auf diese Weise funktioniert es perfekt mit " Suche nach visuell ausgewähltem Text ", wie in vim-wikia tip171 beschrieben. )
:Sie wechseln von Commandzum Command-lineModus. Was auch immer Sie danach schreiben, :befindet sich in der CLI (Command Line Interface).
%sGibt alle Zeilen an. Festlegen des Bereichs als% Mittel die gesamte Datei ersetzt. Die Syntax für alle Vorkommenssubstitutionen lautet:%s/old-text/new-text/g
gGibt alle Vorkommen in der Zeile an. Mit dem gFlag können Sie die gesamte Zeile ersetzen. Wenn dieses gFlag nicht verwendet wird, wird nur das erste Vorkommen in der Zeile ersetzt.
n Gibt an, wie viele Vorkommen ausgegeben werden sollen
//Doppelter Schrägstrich bedeutet Auslassen von replacement text. Weil wir nur finden wollen.
Sobald Sie die Anzahl der Vorkommen erhalten haben, können Sie drücken N Taste drücken, um die Vorkommen anzuzeigen.
Zum Finden und Zählen in einem bestimmten Bereich der Zeilennummern 1 bis 10:
: 1,10s / hallo // gn
Bitte beachten Sie, %dass die gesamte Datei durch ,getrennte Zeilennummern ersetzt wird.
Zum Finden und Ersetzen eines bestimmten Bereichs der Zeilennummern 1 bis 10:
Suchen Sie entweder mit *, um eine "begrenzte Suche" nach dem durchzuführen, was sich unter dem Cursor befindet, oder führen Sie einen Standard durch/pattern .
Verwenden Sie :%s///gndiese Option , um die Anzahl der Vorkommen abzurufen. Oder Sie können verwenden :%s///n, um die Anzahl der Zeilen mit Vorkommen zu ermitteln.
** Ich konnte wirklich ein Plug-In finden, das die Meldung "Übereinstimmung N von N 1 mit N 2 " liefert bei jeder Suche die Meldung Zeilen" liefert, aber leider.
Hinweis: Lassen Sie sich nicht durch den schwierigen Wortlaut der Ausgabe verwirren. Der erstere Befehl könnte Ihnen so etwas wie 4 matches on 3 linesden letzteren geben 3 matches on 3 lines. Letzteres ist zwar technisch korrekt, aber irreführend und sollte "3 Zeilen stimmen überein" sagen. Wie Sie sehen, besteht also nie die Notwendigkeit, die letztere Form (nur 'n') zu verwenden. Sie erhalten die gleichen Informationen klarer und deutlicher, wenn Sie das 'gn'-Formular verwenden.
:g/xxxx/d
) ist schrecklich, gefährlich und anderen auf dieser Seite unterlegen. Bitte deaktivieren Sie es.Antworten:
Dadurch werden alle Zeilen mit Muster gelöscht und es wird angegeben, wie viele gelöscht wurden. Rückgängig machen, um sie danach zurückzubekommen.
quelle
Der Weg ist
:% s / pattern // gn
quelle
Du brauchst die
n
Flagge. Um Wörter zu zählen, verwenden Sie:und ein bestimmtes Wort:
Siehe
count-items
Dokumentationsabschnitt.Wenn Sie einfach Folgendes eingeben:
In der Statuszeile wird dann auch die Anzahl der Übereinstimmungen in vi angezeigt.
quelle
:% s / string / string / g gibt die Antwort.
quelle
%s/string//ng
.(ähnlich wie Gustavo sagte, aber zusätzlich :)
Für jede vorherige Suche können Sie einfach Folgendes tun:
Ein Muster wird nicht benötigt, da es sich bereits im Suchregister befindet (
@/
)."%" -
s/
in der gesamten Datei"g" ausführen - global suchen (mit mehreren Treffern in einer Zeile)
"n" - verhindert jegliches Ersetzen von
s/
- nichts wird gelöscht! nichts darf rückgängig gemacht werden!(siehe:
:help s_flag
für weitere Informationen)(Auf diese Weise funktioniert es perfekt mit " Suche nach visuell ausgewähltem Text ", wie in vim-wikia tip171 beschrieben. )
quelle
verwenden
wenn die Musterzeichenfolge zu lang ist und Sie nicht alles noch einmal eingeben möchten.
quelle
Kurze Antwort :
Zum Lernen :
Es gibt 3 Modi im VI-Editor wie unten
:
Sie wechseln vonCommand
zumCommand-line
Modus. Was auch immer Sie danach schreiben,:
befindet sich in der CLI (Command Line Interface).%s
Gibt alle Zeilen an. Festlegen des Bereichs als%
Mittel die gesamte Datei ersetzt. Die Syntax für alle Vorkommenssubstitutionen lautet:%s/old-text/new-text/g
g
Gibt alle Vorkommen in der Zeile an. Mit demg
Flag können Sie die gesamte Zeile ersetzen. Wenn diesesg
Flag nicht verwendet wird, wird nur das erste Vorkommen in der Zeile ersetzt.n
Gibt an, wie viele Vorkommen ausgegeben werden sollen//
Doppelter Schrägstrich bedeutet Auslassen vonreplacement text
. Weil wir nur finden wollen.Sobald Sie die Anzahl der Vorkommen erhalten haben, können Sie drücken
N
Taste drücken, um die Vorkommen anzuzeigen.Zum Finden und Zählen in einem bestimmten Bereich der Zeilennummern 1 bis 10:
%
dass die gesamte Datei durch,
getrennte Zeilennummern ersetzt wird.Zum Finden und Ersetzen eines bestimmten Bereichs der Zeilennummern 1 bis 10:
quelle
Ich schlage vor:
*
, um eine "begrenzte Suche" nach dem durchzuführen, was sich unter dem Cursor befindet, oder führen Sie einen Standard durch/pattern
.:%s///gn
diese Option , um die Anzahl der Vorkommen abzurufen. Oder Sie können verwenden:%s///n
, um die Anzahl der Zeilen mit Vorkommen zu ermitteln.** Ich konnte wirklich ein Plug-In finden, das die Meldung "Übereinstimmung N von N 1 mit N 2 " liefert bei jeder Suche die Meldung Zeilen" liefert, aber leider.
Hinweis: Lassen Sie sich nicht durch den schwierigen Wortlaut der Ausgabe verwirren. Der erstere Befehl könnte Ihnen so etwas wie
4 matches on 3 lines
den letzteren geben3 matches on 3 lines
. Letzteres ist zwar technisch korrekt, aber irreführend und sollte "3 Zeilen stimmen überein" sagen. Wie Sie sehen, besteht also nie die Notwendigkeit, die letztere Form (nur 'n') zu verwenden. Sie erhalten die gleichen Informationen klarer und deutlicher, wenn Sie das 'gn'-Formular verwenden.quelle