Suchen und Ersetzen in Visual Studio Code oder Notepad++ nur je Bereich

Typ

Ensign
Registriert
Dez. 2023
Beiträge
156
Hallo zusammen,

ich würde gerne in einigen XML-Dateien eine Änderung vornehmen, im Beispiel hier die Ansicht in einem Rennspiel.

Code:
<View ident="head-cam" type="Head" reverseCamera="head-cam_reverse" leftCamera="head-cam-left" rightCamera="head-cam-right" hidden="false" spectator="false" renderParticlesBeforeGrass="false" freeLookAllowed="true" transitionType="switch" transitionDuration="0.1000" transitionStrength="0.0000">
            [...]
            <Parameter name="fov" type="scalar" value="48.0000" />

Die Pünktchen habe ich eingefügt :). Ich würde also gerne den Wert am Ende in 38.000 ändern. Das würde ich aber gerne in allen Dateien eines Ordners machen. Ich bin kein Entwickler, habe aber gefunden, dass dies in Visual Studio Code sehr gut geht mit Replace all.

Das Problem ist nun, dass die Dateien sich minimal unterscheiden und teils auch der FOV mehrfach vorkommt.
Ich möchte also (in irgendeinem Tool) alle XML-Dateien eines Ordners inkl. Unterordner an einer bestimmten Stelle ändern, die ich mit dem übergeordneten "Knoten" angebe.

Also so etwa:
1) Suche die Stelle <View ident="head-cam" type="Head"
2) Suche innerhalb dieses Knotens die Stelle <Parameter name="fov" type="scalar" value="48.0000" />
3) Ändere den Wert auf 38.000

Wie erwähnt bin ich schon recht weit, weil ich das sehr gut in Visual Studio Code ändern kann, aber eben nur für Dateien, die ganz genau gleich aufgebaut sind. Wenn sich dagegen die Werte an den von mir oben eingefügten Pünktchen unterscheiden, kann ich ja nicht in VB Code die mehrzeilige Suche nutzen.
Ich müsste also einen Platzhalter in die mehrzeilige Suche von VB Code einfügen, aber hier komme ich nicht weiter.
Es müsste also eine Suche & Ersetzen "je Knoten" für alle Dateien eines Ordners geben?
 
per regex rekuriv was jede sprache unterstützt (z.b. Python) oder in bash per sed (wen du von Linux kommst).
Es gibt sehr viele Methoden für Pattern Matching die Funktionieren, evtl reicht auch die Zeile in der Datei. Musst du dir halt überlegen was am geschicktesten ist.
 
  • Gefällt mir
Reaktionen: Der Lord
hallo und danke - gibt es diese genannten Möglichkeiten auch irgendwie innerhalb von Visual Studio Code? Ich bin ja Laie und habe immerhin dieses Tool nun etwas kennengelernt, es ist ziemlich komfortabel zu benutzen, wenn man viele Dateien in Unterordnern anschauen und ändern will. Teilweise mache ich auch manuelle Änderungen, aber dann wäre wieder eine Suchfunktion mit Platzhalter sinnvoll.

Ja, auch in Notepad++ wäre das natürlich alternativ möglich.

Ich dachte, das wäre eine relativ häufige Funktion, also dass man etwas ändert in mehreren Dateien, was in einem bestimmten Knoten (heißt das so?) vorkommt. Denn gleiche Zeilen können mehrfach vorkommen in einer Datei. Daher meine Hoffnung, dass man die mehrzeilige Suche einfach etwas erweitern kann durch einen Code oder eine VB-Code-Extension.
Ergänzung ()

also in Visual Studio Code geht das laut Chat GPT so:
Code:
(<View\s+ident="head-cam"[\s\S]*?)<Parameter\s+name="postProcess"\s+type="string"\s+value="incar_default"\s*/>([\s\S]*?</View>)

Code:
$1<Parameter name="postProcess" type="string" value="incar_default2" />$2

(habe dort ein anderes Beispiel genommen)
Es scheint zu klappen, muss mal testen.
Ergänzung ()

und so ist es noch etwas flexibler, diesmal wieder mit FOV:

Code:
(<View[^>]*\s+ident="head-cam"[^>]*>[\s\S]*?)<Parameter\s+name="fov"\s+type="scalar"\s+value="[^"]*"\s*/>([\s\S]*?</View>)

Code:
$1<Parameter name="fov" type="scalar" value="60.0000" />$2
 
Zuletzt bearbeitet:
Ein gutes Tool zum testen deines Patterns ist z.b. Pythex das ist noch nicht ganz so aufgebläht und macht den Anfang einfacher. Wenn du GPT nutzt, kannst du das damit erstmal kontrollieren, ohne es auf die Dateien loszulassen. Ich habe das Video gefunden, sodass man einfach Ersetzungen direkt in VSC machen kann. Wusste ich auch noch nicht.
 
danke, aber es hat inzwischen alles sehr gut geklappt in Visual Studio Code, ist für mich als Anfänger schon sehr gut geeignet, um viele Dateien auf einmal zu bearbeiten.
 
@Typ Wie hast du das gemacht? Habe bisher noch nicht mehrere Dateien in VS Code parallel bearbeitet.
 
Hallo, wenn du mehrere XML-Dateien in einem Ordner hast, kannst du es so machen:
- Ordner öffnen über File > Open Folder
Dann kann man schon mal sehr komfortabel mehrere Dateien schnell hintereinander anschauen und ändern.
Fürs parallele Bearbeiten geht es dann weiter mit:
- Edit > Replace in Files
Die (auch mehrzeilige) Suche & Ersetzen bezieht sich dann auf alle Fundstellen in allen Dateien.
Ggf. noch Regular Expressions (Symbol im Suchfenster) aktivieren und nutzen
(und am Ende natürlich "Replace all")
 
  • Gefällt mir
Reaktionen: BeBur
Zurück
Oben