EmEditor v23.0.0 发布(含技术评论)!

我们发布了 EmEditor v22.3.0

虽然按照惯例,该版本应命名为 v22.6,但由于进行了大量更改,并且是一次真正的重大更新,同时也是今年最后一次的重大更新,我们决定与 2023 年的最后两位数字保持一致,并将其命名为 v23.0。

生成式 AI 的最新进展(包括 ChatGPT)使人们能够通过网络浏览器使用各种信息和服务。 EmEditor 用户越来越需要直接在 EmEditor 内使用这些 Web 服务,从而无需使用外部浏览器。在新版本中,我们添加了在 EmEditor 的自定义栏中显示网页浏览器的功能。该浏览器设计为与宏结合使用,让用户能将编辑器中的文档的一部分发送到网页浏览器所显示的站点中,反之亦然。要利用这些功能,请确保在自定义宏对话框的选项页面中勾选使用 V8 作为 JavaScript 引擎复选框,或在每个宏的开头行添加以下内容:


#language = "V8"

添加了两个具体功能:

(1) web. 关键字:要访问 HTML 的文档对象模型 (DOM),请使用小写的 web. 关键字。这种区别对于区分 EmEditor 中的对象和网页浏览器中的对象是必要的。 例如,在宏中:


document.write( "Test" );

目前尚不清楚 “Test” 是否应显示在 EmEditor 的编辑器视图中或网页浏览器的 HTML 中。要在 Web 浏览器中显示 “Test” ,请添加 web. 前缀:


// Displays "Test" in Web Browser
web.document.write( "Test" );

使用此语法,以 web. 开头的关键字将被解释为在网页浏览器中执行的指令,从而允许访问 DOM。 示例包括:


// Returns the URL of the current web page.
alert( web.location.href );

// Returns the preferred language of the browser.
alert( web.navigator.language );

// Pastes the text of the current web page into a new document.
editor.NewFile();
write( web.document.documentElement.innerText );

// Pastes the HTML of the current web page into a new document.
editor.NewFile();
write( web.document.documentElement.outerHTML );

(2) onLoad 事件:如果最后执行的宏包含以 onLoad() 开头的函数,则仅在网页更新或加载新页面时调用一次。此功能允许执行诸如在搜索网站上检索搜索结果之类的任务。 例如:


function onLoad() {
    // Retrieves the HTML of the page and pastes it into a new document.
    editor.NewFile();
    document.write( web.document.documentElement.outerHTML );  
}

Bing.jsee 宏示例 演示如何从 HTML 搜索结果中检索和显示特定信息。请注意,某些搜索网站(例如 ChatGPT 的免费版本)可能不会触发页面更新或新页面加载。在这种情况下,不会发生 onLoad() 事件,从而阻止使用此事件检索搜索结果。尽管如此,Makoto Emura 提出了一个想法,使用 MutationObserver 接口并在发生变化时检索文本。ChatGPT.jsee 宏示例演示了如何使用此接口从 ChatGPT 检索响应。如果按原样运行此宏,则所选文本只会输入到 ChatGPT 提示框中。但是,如果取消第 99 至 100 行的注释,该宏会发送文本。免责声明:Bing 和 ChatGPT 响应的格式将来可能随时更改,从而可能影响这些宏的功能。这些宏仅用于演示 EmEditor v23.0 的新功能。我们不保证这些宏将来会持续起作用。

v23.0 的另一个重大变化是对于处理大文件的优化。EmEditor 用户经常处理非常大的 CSV 文件,有时甚至达到好几千兆字节。为了确保处理此类大文件时性能的流畅性,我们对删除、插入、合并、排序和粘贴列等操作进行了广泛的测试。这些命令通过多线程和其他优化技术进行了优化,让EmEditor v23.0 与 v22.5 相比,速度提高约 21 到 34 倍

CSV 转换器中,之前的版本缺乏多线程代码,导致处理大文件时性能缓慢。新版本通过使用多线程和 SIMD 代码改进了这一点,即使是数千兆字节的 CSV 文件,格式转换也可以在几秒钟内完成。

对于日语 (JIS) 和日语 (EUC),v23.0 放弃使用传统的 Windows API 对象 MultiLanguage,转而使用自定义查找表。这一变化增强了对无效字符的检测逻辑,并显著提高了文件打开和搜索等操作的速度。

在 v22.5 中,单击行号的左边缘可切换书签。根据用户反馈,在自定义对话框的鼠标页面中添加了禁用此功能的选项。

Markdown 配置已得到改进,通过添加到特殊语法,可以更准确地体现强调格式,例如粗体和斜体。

使用语言服务器协议,Makoto Emura 添加了一项功能来格式化所选字符串或整个文档。此命令可通过转换菜单的格式化访问(快捷键:Ctrl+K、F),消除了不一致的情况;例如,前导制表符或空格的数量以及括号 () 或 {} 周围空格的位置和存在,以提高可读性。用户可以选择要格式化的代码,如果未进行选择,则会出现一个对话框提示是否格式化整个文档。或者您可以按快捷键 Ctrl+K、D 来格式化整个文档。要启用格式化命令,必须在自定义对话框的语言服务器页面上启用语言服务器协议选项,并且必须从文档类型下拉列表中选择所需格式化的语言。请注意,格式化的偏好(例如括号周围是否存在空格)取决于语言服务器,无法在 EmEditor 中自定义。

从该版本开始,语言服务器协议正式支持 C++CSSHTMLJavaScript用于 EmEditor 的 JavaScriptPerlPython 配置。用户可以随时在自定义对话框的语言服务器页面的设置中禁用此功能。

Makoto 通过添加一个更新子模块选项来将更改拉到子模块中,从而增强了 CommitList (Git) 插件。 他还从 CommitList 侧栏中的暂存文件列表(不是未暂存的文件)中删除了撤消更改菜单项,以避免对预期行为产生混淆。

最后,由于传统的帮助系统使用了过时的设计并且难以维护,从这个版本开始,我们用 Sphinx 对帮助进行了重新设计。新的帮助系统是在我们的 GitHub 页面上维护和构建的。

我希望您喜欢 EmEditor,无论您使用的是专业版还是免费版。如果您有任何问题、功能请求或想法,请联系我们在论坛中留言

感谢您使用 EmEditor!
Yutaka Emura

详细信息和屏幕截图,请参阅 EmEditor v23.0 新增特性

此发布还包括了开发 v23.0 时的所有错误修复.

如果您使用的是桌面安装程序版,那您可以到帮助菜单下选择检查更新来下载最新版本。 如果此方法失败,请下载最新版本,并运行下载的安装程序。 如果您使用的是桌面便携版,则可以转到下载页面下载最新版本。商店应用版可以在几天后通过 Microsoft 商店更新( 64 位 / 32 位)。如果您使用 winget,您可以输入 “winget install emeditor” 来安装最新版本的 EmEditor(自动检测 64 位或 32 位)。