Suchen und Ersetzen über mehrere Zeilen hinweg mit Umwandlung in Kleinbuchstaben in Vim

8

Folgendes möchte ich für jede der vielen Dateien tun:

  • suche nach allen Vorkommen von <a href und beginne die Blockauswahl
  • Wählen Sie bis zum ersten Vorkommen von >
  • konvertiert die gesamte Übereinstimmung in Kleinbuchstaben
Olivier Pons 18.05.2010, 15:03
quelle

1 Antwort

15

Schau es dir an:

%Vor%

Dies sagt: match <a href , gefolgt von null oder mehr Zeichen neben > , einschließlich Zeilenumbrüche (angezeigt durch \_ ), und schließlich ein > . Ersetzen Sie es durch <a href , den erfassten Text in Kleinbuchstaben (angezeigt durch \L ) und das nachgestellte > .

Offensichtlich bist du alleine, wenn irgendwo in deinem Tag ein > ist, aber so ist das Leben.

(Und falls es nicht klar ist, verwenden Sie dies als :%s/.../... oder :<range>s/.../.../ für kleinere Bereich .)

Um dies für mehrere Dateien zu verwenden, verwenden Sie windo , bufdo oder tabdo (abhängig davon, ob die Dateien als Registerkarten, Fenster oder nur als Puffer geöffnet sind). Es gibt eine Menge Dokumentation da draußen:

Im Allgemeinen sieht es wahrscheinlich so aus:

%Vor%

Ich habe der bufdo-Version einen Schreibbefehl hinzugefügt, weil er nicht zum nächsten Puffer wechseln kann, ohne den aktuellen zu speichern. Sie könnten dies auch für die anderen tun, wenn Sie sofort schreiben möchten, aber ohne sie arbeiten. Es liegt an Ihnen, alle Dateien zu öffnen - der einfachste Weg ist nur vim <lots of files> , um sie als Puffer zu erhalten, oder vim -o <lots of files> , um sie als Fenster zu erhalten (verwenden Sie -O , um vertikal anstatt horizontal zu teilen).

    
Cascabel 18.05.2010, 15:14
quelle