Como usar o Advanced Editing no Notepad ++ ou similar

0

Eu gostaria de poder editar seções de texto da seguinte maneira.

Eu posso ter uma seção como visto abaixo.

Exemplo.

Instance=wall

{

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

Eu preciso encontrar a seção que quero com base no nome 'Instância' neste caso 'parede' e, em seguida, alterar o script na linha 4

Eu gostaria de mudar o CollTarget e HatTarget para True,

Um caso simples de recortar / colar se for apenas uma ou duas vezes, mas pode ser até 500 vezes e as seções serão espalhadas pelo texto, algumas áreas terão o mesmo script, ou seja, CollTarget = False HATTarget = False, que não precisa de edição. O arquivo pode ter até 5000 linhas semelhantes ao EXEMPLO abaixo

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
}

Note também que as linhas não são todas iguais entre os parênteses

mas na seção seguinte eu posso não querer fazer isso.

Instance=20road007

{

    VisGroups=(32)
    MeshFile=20road007.gmt CollTarget=False HATTarget=True Response=VEHICLE,TERRAIN 

}

como Adicionar / Colar um pedaço extra de script ou até Excluir um pedaço do script completamente

Isso é possível usando uma macro? Eu poderia fazer algo no Notepad ++ ..... ele tem muitos comandos? Preciso escrever um programa 'BASIC'. Eu não entendo de macro e minha programação é limitada.

Como eu faria isso? Seria uma poupança de tempo. Espero ter me esclarecido.

Qualquer ajuda seria muito apreciada. Obrigado

    
por Tonto 14.04.2014 / 09:31

1 resposta

1

Estou fazendo algumas suposições, mas parece que você quer encontrar todas as linhas que contêm

MeshFile=<someValue>.gmt

atualize os parâmetros para CollTarget e HATTarget para TRUE, sem tocar em nenhum dos outros parâmetros que possam estar nessa linha.

Assumindo que CollTarget e HATTarget são sempre os dois primeiros parâmetros, e na mesma ordem, você pode executar um comando Substituir Tudo (CTRL + H) em seu arquivo e usar o seguinte:

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

Explicação:

  • Veja a documentação do Notepad ++ Regex para a sintaxe geral ( link )
  • Qualquer valor encontrado pelo padrão entre parênteses estará disponível na sintaxe "$ N". O número de cooresponds ao par de parênteses conta na expressão find.
  • Altere o valor no segundo par de parênteses para alterar o nome da instância para o qual você deseja substituir / atualizar. No meu exemplo eu usei wall.gmt
  • A expressão de substituição pode ser traduzida para:
    • Insira qualquer coisa encontrada no começo da linha antes do nome da instância - o material encontrado por "(. *)"
    • Insira o nome da instância pesquisada (para que você não precise digitá-la na expressão de pesquisa e substituição)
    • Forneça os novos valores para CollTarget e HATTarget
    • Anexar tudo o que foi encontrado após o HATTarget

Se minha suposição de que CollTarget e HATTarget não são sempre os primeiros ou na mesma ordem, será necessário modificar a expressão de pesquisa em duas chamadas de pesquisa e substituição separadas nas quais a primeira pesquisa somente CollTarget e atualiza o valor desse parâmetro. então um segundo para procurar pelo HATTarget e atualizá-lo.

    
por 01.05.2014 / 19:56