Notizblock++
Ich suche nach einer Möglichkeit, einen Textblock massenhaft zu kommentieren (und nach dem Code, um dies rückgängig zu machen). Dabei werden andere Teile derselben Datei ignoriert, aber gleichzeitig einige Unterschiede in den einzelnen Blöcken berücksichtigt.
Beispielblock bereits auskommentiert,
Code to keep Above
#1291.5.21 = { #some more text to preserve
# owner = XXX
# controller = XXX
# add_core = XXX
# remove_core = XXX
#} #some more text to preserve
More code to keep below
Die XXX wären in jedem Block unterschiedlich, könnten in verschiedenen Dateien aber auch gleich sein (allerdings nur drei Buchstaben/Zahlen). Um die Komplexität etwas zu erhöhen, würden Blöcke mit genau XXX im Idealfall ignoriert (und kommentiert bleiben).
Der einzige wirkliche Zeiger für die Blockbeschränkungen sind die Daten = { und das schließende }, die identisch wären (bis hin zum (weitgehend einschließlich) dem #-Text, nach dem gespeichert werden soll).
Endergebnis dessen, was ich suche.
Code to keep Above
1291.5.21 = { #some more text to preserve
owner = XXX
controller = XXX
add_core = XXX
remove_core = XXX
} #some more text to preserve
More code to keep below
Bonuspunkte gibt es, wenn Sie dies mit einem Klick für 4 oder alle 8 Daten tun können. (da sie Superblöcke bilden)
1291.5.21
1291.5.23
1291.5.24
1291.5.26
1444.11.13
1444.11.15
1444.11.16
1444.11.18
Antwort1
Hier ist eine Lösung zum Entfernen der Kommentarzeichen aus Zeilen, deren Wert ungleich ist XXX
:
- Ctrl+H
- Finde was:
^#(?=\d{4}\.\d\d?\.\d\d?|}|\h+(?:owner|controller|add_core|remove_core)\h*=\h*(?!XXX)\w{3}$)
- Ersetzen mit:
LEAVE EMPTY
- ÜBERPRÜFEN Groß-/Kleinschreibung beachten
- ÜBERPRÜFEN Umwickeln
- ÜBERPRÜFEN Regulären Ausdruck
- DEAKTIVIEREN
. matches newline
- Replace all
Erläuterung:
^# # beginning of line and # sign
(?= # positive lookahead
\d{4}\.\d\d?\.\d\d? # date
| # OR
} # closing curly brace
| # OR
\h+ # 1 or more horizontal spaces
(?: # non capture group
owner # literally
| # OR
controller # literally
| # OR
add_core # literally
| # OR
remove_core # literally
) # end group
\h*=\h* # equal sign wth optional spaces before and after
(?!XXX) # negative lookahead, make sure we haven't XXX after
\w{3} # 3 word characters
$ # end of line
) # end lookahead
Screenshot (vorher):
Screenshot (nachher):