Vim Regex ersetzen durch n Zeichen

8

Ich habe eine Regex, um ein bestimmtes Muster durch eine bestimmte Zeichenfolge zu ersetzen, aber ich möchte es dynamischer gestalten.

Sagen wir zum Beispiel, ich habe diese Regex:

%s/hello/-----/g

Ich würde jedoch gerne so etwas tun:

%s/hello/-{5}/g

was bedeutet, hallo durch 5 Gedankenstriche ersetzen.

Gibt es eine Möglichkeit, dies zu tun?

Letztendlich würde ich gerne so etwas tun:

%s/(hello)*/-{\=strlen(hello)}/g

würde jede Instanz einer Zeichenfolge von nur %code% s durch Bindestriche ersetzen, deren Länge der Länge der übereinstimmenden Zeichenfolge entspricht.

    
tjameson 07.09.2011, 18:33
quelle

2 Antworten

19
%Vor%     
Peter Rincker 07.09.2011, 18:41
quelle
5

Anstatt den Befehl substitute zu verwenden, kann man Befehle zum Editieren automatisieren Durchführen des Austauschs. Die einfachste Möglichkeit, das Auftreten von Das Suchmuster mit bestimmten Zeichen von Hand ist das folgende.

  1. Suche nach dem Beginn des nächsten Auftretens.

    %Vor%
  2. Wählen Sie den passenden Text bis zum Ende.

    %Vor%
  3. Ausgewählten Text ersetzen.

    %Vor%
  4. Wiederholen Sie den Vorgang ab Schritt 1.

Um diese Routine zu automatisieren, führen Sie den Befehl

aus %Vor%

und führe den Inhalt dieses s -Registers aus, beginnend am Anfang von der Puffer (oder von einem anderen geeigneten Ort):

%Vor%     
ib. 08.09.2011 05:56
quelle

Tags und Links