Как использовать расширенное редактирование в Notepad++ или аналогичном
Я хотел бы иметь возможность редактировать разделы текста следующим образом.
Я мог бы иметь раздел, как показано ниже.
Пример.
Instance=wall
{
VisGroups=(32)
MeshFile=wall.gmt CollTarget=False HATTarget=False
}
Мне нужно найти нужный раздел на основе имени "Instance" в данном случае "wall", а затем изменить сценарий в строке 4
Я хотел бы изменить CollTarget и HatTarget на True,
Простой случай вырезания / вставки, если это только один или два раза, но это может быть до 500 раз, и разделы будут разбросаны по всему тексту, некоторые области будут иметь один и тот же сценарий, например, CollTarget=False HATTarget=False, который не нужно редактировать. Файл может быть длиной до 5000 строк, как в примере ниже
Instance=object350
{
MeshFile=object350.gmt CollTarget=False HATTarget=False
}
Instance=box056
{
VisGroups=(32)
MeshFile=box056.gmt CollTarget=False HATTarget=False
}
Instance=wall01
{
VisGroups=(32)
MeshFile=wall.gmt CollTarget=True HATTarget=False
}
Instance=track01
{
MeshFile=track01.gmt CollTarget=True HATTarget=True
}
Обратите внимание также, что строки не все одинаковые суммы в скобках
но в следующем разделе я не хочу этого делать.
Instance=20road007
{
VisGroups=(32)
MeshFile=20road007.gmt CollTarget=False HATTarget=True Response=VEHICLE,TERRAIN
}
например, добавить / вставить дополнительный фрагмент сценария или даже полностью удалить его.
Возможно ли это с помощью макроса? Могу ли я что-нибудь сделать в Notepad++ ..... в нем много команд? Нужно ли мне писать программу на бейсике? Я не понимаю макросов, и мое программирование ограничено.
Как бы я это сделал? Это будет такая экономия времени. Я надеюсь, что я ясно дал понять.
Любая помощь будет принята с благодарностью. Благодарю вас
1 ответ
Я делаю несколько предположений, но, похоже, вы хотите найти все строки, которые содержат
MeshFile=<someValue>.gmt
затем обновите параметры для CollTarget и HATTarget до TRUE, не касаясь каких-либо других параметров, которые могут быть в этой строке.
Предполагая, что CollTarget и HATTarget всегда являются первыми двумя параметрами, и в том же порядке вы можете запустить команду "Заменить все" (CTRL+H) для вашего файла и выполнить следующее:
Find what = (.*)(wall.gmt) CollTarget=(\w+) HATTarget=(\w+)(.*)
Replace with = $1$2 CollTarget=True HATTarget=True$5
Объяснение:
- Общий синтаксис приведен в документации по Notepad++ Regex ( http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions).
- Любое значение, найденное шаблоном в круглых скобках, будет доступно в синтаксисе "$N". Число соответствует количеству пар в скобках в выражении поиска.
- Измените значение во второй паре скобок, чтобы изменить имя экземпляра, для которого вы хотите выполнить замену / обновление. В моем примере я использовал wall.gmt
- Выражение замены может быть переведено в:
- Вставьте что-нибудь, найденное в начале строки перед именем экземпляра - материал, найденный с помощью "(.*)"
- Вставьте имя экземпляра, который искали (чтобы вам не приходилось вводить его в поиске и замене выражения)
- Присвойте новые значения CollTarget и HATTarget
- Добавить все, что было найдено после HATTarget
Если я предполагаю, что CollTarget и HATTarget не всегда являются первыми или в одном и том же порядке, то вам нужно будет изменить выражение поиска на два отдельных запроса поиска и замены, где первый ищет только CollTarget и обновляет значение этого параметра, затем второй один, чтобы найти HATTarget и обновить его.