Как использовать расширенное редактирование в Notepad++ или аналогичном

Я хотел бы иметь возможность редактировать разделы текста следующим образом.

у меня есть раздел, как показано ниже.

пример.

Instance=wall

{

    VisGroups=(32)
    MeshFile=wall.gmt CollTarget=False HATTarget=False 
}

мне нужно найти раздел, который я хочу, основываясь на имени "экземпляра" в этом случае "стена", а затем изменить сценарий в строке 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++ ..... у него много команд? Нужно ли мне писать "базовую" программу. Я не понимаю макросы и мое Программирование ограничено.

как бы я это сделал? Это было бы экономией времени. Надеюсь, я ясно выразился.

любая помощь будет принята с благодарностью. Спасибо

9
задан Dane
05.02.2023 21:20 Количество просмотров материала 2750
Распечатать страницу

1 ответ

Я делаю несколько предположений, но, похоже, вы хотите найти все строки, содержащие

MeshFile=<someValue>.gmt

затем обновите параметры CollTarget и HATTarget до TRUE, не затрагивая другие параметры, которые могут быть в этой строке.

предполагая, что CollTarget и HATTarget всегда первые два параметра, и в том же порядке, вы можете запустить команду заменить все (CTRL+H) на вашем файле и пользователь следование:

Find what =    (.*)(wall.gmt) CollTarget=(\w+) HATTarget=(\w+)(.*)
Replace with =  CollTarget=True HATTarget=True

объяснение:

  • посмотреть Блокнот++ документация regex для общего синтаксиса (http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions)
  • любое значение, найденное шаблоном в скобках, будет доступно в синтаксисе "$N". Количество cooresponds в скобках считать пары находят свое выражение.
  • измените значение во второй паре скобок на измените имя экземпляра, для которого требуется выполнить замену или обновление. В моем примере я использовал стену.gmt
  • выражение замены можно преобразовать в:
    • вставить все найденное в начале строки перед именем экземпляра-материал, найденный" (.*)"
    • вставьте искомое имя экземпляра (чтобы не вводить его в выражение поиска и замены)
    • дать новые значения CollTarget и HATTarget
    • добавить все, что было найдено после HATTarget

Если мое предположение, что CollTarget и HATTarget не всегда первые или в том же порядке, то вам нужно будет изменить выражение поиска на два отдельных поиска и заменить вызовы, где первый ищет только CollTarget и обновляет значение этого параметра, а затем второй, чтобы найти HATTarget и обновить его.

1
отвечен Jerren Saunders 2023-02-07 05:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх