Version 21.7 新增特性

2022年5月11日

一般新增功能

  • 新版本会默认用垂直分割窗口显示比较文件的结果,当您选择比较按参数比较命令时。之前使用的平铺窗口显示仍然可以通过设置选项来实现。
  • 如果重新加载之前滚动位置在底部,则新版本将在重新加载文件时保持滚动位置在底部。
  • 当在配置属性的文件页面中选择全部检测选项时,如果 Windows 不支持检测到的编码(如VISCII),新版本将继续以系统默认编码打开文件并显示通知。
  • 改进了 URI 高亮显示。
  • 改善了 CSV 选择模式中的行选取行为。
  • 水平网格的默认样式由虚线改为普通,并优化垂直分隔符的绘制速度。
  • 在某些配置(包括 C++)中更改了正则表达式中结尾缩进的默认值。
  • 批处理替换对话框支持多项替换全部多项替换全部会在文档中同时搜索所有搜索字符串,而批处理替换全部则在文档中一次搜索一个搜索字符串,然后重复对每个搜索词的搜索。多项替换全部的速度比批处理替换全部快得多。详细信息请参阅批处理替换全部和多项替换全部之间的区别

测试结果:

批处理替换全部(v21.7)多项替换全部(v21.7)比较
替换全部50 分 55 秒0.484 秒快 6310 倍

* 用随机字符串替换 100 万个随机字符串,忽略大小写,966 KB,10,000 行,随机 ASCII 数据。默认选项;操作系统:Windows 11,Core i9-11900K,64GB RAM,2TB SSD。

新增选项

  • 添加了多项替换全部按钮到批处理替换批处理在文件中替换对话框中。
  • 添加了多项查找按钮到批处理在文件中查找批处理在文件中替换对话框中。
  • 添加了垂直分割单选按钮到比较文件向导的选择查看选项页面中。
  • 添加了仅在 EmEditor 处于活动状态时监控文件选项到自定义对话框的文件页面上。

插件的新增功能

  • 添加了 FLAG_FIND_MULTI 标志到 BATCH_INFO 结构中。
  • 添加了 LFI_DONT_ADD_RECENT 标志到 LOAD_FILE_INFO_EX 结构中。
  • 添加了 COMPARE_SPLIT_VERT 标志到 Editor_Compare 内联函数以及 COMPARE_INFO 结构中。

新增宏功能

  • 添加了 eeExFindMulti 标志到 Selection 对象的 BatchReplace 方法和 Editor 对象的 BatchFindInFilesBatchReplaceInFiles 方法中。
  • 添加了 eeCompareSplitVert 标志到 Editor 对象的 Compare方法中。

批处理替换全部和多项替换全部之间的区别

批处理替换全部一次在整个文档中搜索一个字符串,并按搜索字符串的数量重复此过程。多项替换全部同时搜索所有搜索字符串。这个区别会导致不同的结果,如果搜索/替换字符串配对包含如下示例:

1 → 5
2 → 4
4 → 2
5 → 1

并且如果源文档是:

[1,2,3,4,5]

在这个情况下,如果用批处理替换全部,EmEditor 会先把整个文档中的 1 替换为 5,然后再将 2 替换为 4。这样,源文档会变为:

[5,4,3,4,5]

接下来,当它将 4 替换为 2 时,请注意它将替换两个 4(第二个和第四个数字)。最后,当它将 5 替换为 1 时,它将替换两个 5(第一个和最后一个数字)。因此,结果将是:

[1,2,3,2,1]

如果使用新的多项替换全部,EmEditor 将同时替换所有字符串。因此,结果将是:

[5,4,3,2,1]

多项替换全部的执行速度会比批处理替换全部快很多。在我们的测试中,多项替换全部的速度比批处理替换全部快 6310 倍,当搜索/替换配对有 100 万个时。(请参考测试结果)。

多项替换全部不支持正则表达式,数字范围,或包含换行的字符串。