我希望能够按照以下方式编辑文本部分。
我可能有一个如下所示的部分。
例子。
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++ 中执行某些操作吗?它有很多命令?我需要编写“BASIC”程序吗?我不懂宏,而且我的编程能力有限。
我该怎么做呢?这样可以节省很多时间。希望我已经表达清楚了。
任何帮助都将不胜感激。谢谢
答案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 并更新它。