Как использовать расширенное редактирование в 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 и обновить его.

Другие вопросы по тегам