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),消除了不一致的情況;例如,開頭 Tab或空格的數量以及括號 () 或 {} 周圍空格的位置和存在,以提高可讀性。使用者可以選擇要格式化的程式碼,如果未進行選擇,則會出現一個對話方塊提示是否格式化整個文檔。或者您可以按快速鍵 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 位)。