Vim: Ersetzen Sie n durch n + 1

8

Wie ersetze ich jede Zahl n , die einem bestimmten Muster entspricht, mit n+1 ? Z.B. Ich möchte alle Zahlen in einer Zeile in Klammern mit dem Wert + 1 ersetzen.

%Vor%

sollte

werden %Vor%     
pfnuesel 05.10.2013, 08:09
quelle

2 Antworten

11

%s/<\zs\d\+\ze>/\=(submatch(0)+1)/g

Zur Erklärung:

%Vor%

Bearbeiten: Wenn Sie nur eine bestimmte Zeile ersetzen möchten, bewegen Sie den Cursor auf diese Zeile und führen Sie

aus %Vor%

oder verwenden

%Vor%

(ersetzen Sie LINENUM durch die tatsächliche Zeilennummer, zB 13)

    
cogitovita 05.10.2013, 08:26
quelle
4

In vim können Sie die numerische Ziffer an oder hinter dem Cursor durch Drücken von

erhöhen (dekrementieren) %Vor%

Wenn nur um eins erhöht (dekrementiert) wird, muss NUMBER nicht angegeben werden. In Ihrem Fall würde ich dafür ein einfaches Makro verwenden:

%Vor%

Hier eine kurze Erklärung des Makros: Es verwendet den Befehl find (f) commant, um den Cursor auf die Öffnung & lt; Klammer. Es ist nicht notwendig, den Cursor auf die Ziffer zu positionieren. Wenn Sie die Zahl auf dem Cursor oder die nächste Zahl drücken, wird der Cursor inkrementiert.

Wenn Sie eine noch kürzere Reihe von Befehlen wünschen, können Sie Ihren Cursor ONCE positionieren, indem Sie f< drücken, erhöhen Sie die Zahl mit ctrl-a und drücken dann einfach wiederholt ;. . Der Befehl ; wiederholt die letzte Cursorbewegung, d. H. Den Befehl find. Der Befehl . wiederholt den letzten Textänderungsbefehl.

Sehen Sie sich diesen Link für weitere Informationen an oder verwenden Sie die integrierte Dokumentation: h: ctrl-a .

    
el_tenedor 05.10.2013 08:28
quelle

Tags und Links