
如果你使用 KDE 或像 Manjaro、openSUSE 或 Fedora 這樣帶有 Plasma 的發行版,遲早你會遇到這個問題。 應用程式選單中的 KWrite 和 Kate乍一看它們似乎幾乎相同,事實上,許多人想知道為什麼兩者都被安裝了,它們是否是同一個應用程序,或者是否可以刪除其中一個而不刪除另一個。
事實是,KWrite 和 Kate 他們是兩個關係非常親密的「兄弟」。它們幾乎共享整個內部引擎,但設計用途不同:一個是輕量級、簡單的編輯器,另一個是用於程式設計和大型專案的高級編輯環境。讓我們仔細看看它們的差異、共同點、起源以及各自的適用場景。
KWrite與Kate的起源與關係
大約二十年間, 在 KDE 生態系中,KWrite 和 Kate 一直密不可分。從歷史上看,KWrite 是第一個:它是一款單視窗文字編輯器 (SDI),早期版本的 KDE 中包含了典型的「功能強大的」記事本。
隨著時間的推移,KDE 的一位主要開發者決定創建 Kate 作為多重文件變體 (MDI)Kate 專為處理多個分頁、更多面板和程式導向的功能而設計,是 KWrite 最強大的多文件版本。
很多年了, 這兩個項目的發展路徑略有不同。KWrite 變化不大:它仍然是一個簡單的編輯器,偶爾會進行一些改進和錯誤修復,但並沒有發展成一個龐大的「套件」。同時,Kate 則重新實現了諸如標籤頁系統、會話管理、高級插件、整合終端和專案支援等功能。
然而,他們使用的核心編輯系統是相同的: KDE框架的KTextEditor庫正因如此,KWrite 和 Kate 都提供了非常強大的編輯體驗,遠勝於普通的記事本,儘管 KWrite 在視覺上可能看起來「基礎」。
單一程式碼庫:當 Kate “吞噬” KWrite 時
近年來,該計畫做出了一項重要決定: 避免重複程式碼,讓 KWrite 直接重複使用 Kate 的程式碼庫。透過停用更高級的功能。這個想法源自於他們想在 KWrite 中新增製表符功能。
一位開發者(Waqar,在專案中非常活躍)開始實施 KWrite 中的睫毛支撐問題在於 Kate 的儲存庫中的標籤頁已經重寫了好幾次,無論是在核心程式碼中還是透過插件,再添加一個需要長期維護的實作是沒有意義的。
為了避免重複勞動,團隊決定… KWrite不會擁有獨立的程式碼庫。但會使用與 Kate 相同的核心,並採用「裁剪」模式。 KWrite 現在被建構成一種… Kate 簡化了操作,無需會話,無需插件,介面也極其簡潔。從技術上講,兩者之間的主要區別在於主要功能以及共享程式碼中的一些檢查,這些檢查用於啟動或隱藏介面的某些部分。
由於這項改變, 刪除了大約一千行 KWrite 特有的程式碼。 只需在通用程式碼中添加幾行程式碼即可。最終,兩個編輯器幾乎共享所有邏輯,包括現代化的製表符系統、命令列參數解析和基本編輯行為。
然而,即便他們已經統一了內部基礎, KWrite 仍然保持著其獨特的個性。它不支援視窗間實例共享,沒有會話管理功能,無法載入進階插件,也不提供整合終端或伺服器語言(LSP)等功能。如果您需要這些功能,則必須選擇 Kate。
KTextEditor:通用編輯引擎
KWrite 和 Kate 它們都依賴同一個編輯庫,即 KTextEditor。它是 KDE 框架的一部分。該庫提供了你在這兩個程式中看到的幾乎所有強大的編輯“魔法”,也被 KDevelop 和其他 KDE IDE 等其他應用程式使用。
這意味著 純粹的文字編寫、選擇、高亮顯示和編輯體驗幾乎完全相同。 KWrite 和 Kate 之間沒有區別。如果你習慣了其中一個,使用另一個甚至 KDevelop 也不會有任何問題,因為整個系列中文字區域的行為都是一致的。
多虧了 KTextEditor,兩個編輯器都擁有了 為無數語言提供語法高亮顯示,對特定模式的分析(例如, 降價支持HTML、Python、C 等程式語言),以及自動縮排、行號、文件迷你視圖等編輯工具,還有遠超過普通編輯器的其他功能。
在不同系統上的安裝和分發
一般來說,如果您使用 KDE Plasma, 很可能,您的電腦預設已經安裝了 KWrite。凱特,另一方面,根據佈局的不同,你可能需要手動安裝。
在像 Fedora 這樣基於 RPM 的系統上,只需執行類似這樣的指令: sudo dnf install kwrite kate在其他發行版中,這些軟體包的名稱相同或非常相似。此外, 兩者均獨立出版。KWrite 可在 apps.kde.org/kwrite 取得,Kate 可在 apps.kde.org/kate 取得。
在KDE生態系中, 您可以在桌面版的「發現」功能表中安裝它們。KWrite 也以 Flatpak 格式分發,適用於偏好這種獨立軟體包的環境。例如,在 Manjaro 系統中,您會在 Pamac 中看到它們是兩個獨立的程序,儘管它們在很大程度上共享原始程式碼和依賴項。
一個重要的細節是 它們之間並非像包裹一樣相互依賴。換句話說,你可以單獨使用 KWrite,單獨使用 Kate,或同時使用兩者,它們之間不會相互幹擾,配置不會混淆,也不會出現直接的依賴衝突。它們就像「乖巧的雙胞胎」一樣配合默契。
KWrite:一款輕量級編輯器,但價格不便宜。
如果您在開啟 KWrite 時期望看到類似這樣的內容 記事簿 非常有限,你會感到驚訝的,因為 它是一款輕量級編輯器,但具備相當多的高級功能。您可以從應用程式選單啟動它,然後直接開始寫作,保存單一文字、筆記、小腳本等。
它傳統上被認為具有以下功能: HTML匯出、選擇模式鎖定、程式碼追蹤和書籤所有這些功能使其非常適合記筆記和非正式程式碼編輯。它還提供單字自動補全和其他寫作輔助功能。
它有 支援多種語言的可設定語法高亮顯示它還提供行尾模式選擇(Unix、Windows、Macintosh)和文字編碼選擇選項。雖然它並非總是自動檢測文件編碼(打開文件時通常使用系統預設編碼),但您可以根據需要手動更改。
另一個很酷的功能是 它允許透過 FTP 或 FISH 等協定處理遠端檔案。與 KDE 網路基礎架構整合。這使得編輯伺服器上的檔案變得容易,而無需設定複雜的外部解決方案。
KWrite 也包含以下選項: 借助KParts技術,可以使用不同的組件。 (在早期版本中,這是一項重大創新。)這使得在編輯器中嵌入 Konsole 控制台或其他元件成為可能。後來,Kate 引擎被採納為預設文字編輯器,從而鞏固了這種整合。
在KDE的歷史背景下, KWrite 是 kdebase 套件的一部分 而且,最近它還與 Kate 一起發布,其程式碼位於程式碼庫的一個專用子目錄中。所有這些都進一步強化了這樣一個觀點:它並非一個完全獨立的項目,而是同一底層技術的不同面向。
共享功能:書籤、高亮顯示等
由於 KWrite 和 Kate 都基於 KTextEditor,它們共享一些工具,這些工具與非常基礎的編輯器相比具有顯著優勢。例如: 您可以使用臨時書籤快速瀏覽文件。.
使用簡單的鍵盤快速鍵,例如 按 Ctrl+B 建立書籤然後您可以從書籤選單跳到這些書籤。它們不會保存到文件中(不會修改實際內容),但在您工作時,它們是標記重要部分的便捷方式。這比在文本中隨意添加“foobar”之類的詞語,然後之後再費力查找,而且您最終可能還會忘記刪除它們,要實用得多。
另一個關鍵功能是 語法高亮和文件模式從工具選單中,您可以啟動自動拼字檢查功能,該功能會以底線突出顯示錯誤,還可以為特定格式選擇特定模式:Markdown、HTML、Python、C/C++ 等。每種模式都會套用不同的突出顯示方案,以幫助您閱讀並更好地理解內容。
如果你想更具體地說明,你可以 無論模式如何,直接選擇高亮類型。如果您想要強制使用特定的視覺方案,可以使用此功能。這種靈活性意味著同一個編輯器既可以用於編寫純文本,也可以用於快速調試程式碼片段。
此外,許多用戶尤其欣賞 文件概覽在右側。它就像是整篇文本的垂直縮圖。雖然看起來很小,但它在查找章節、標題或程式碼片段方面非常實用,只需單擊即可跳到大致位置。
Kate提供的服務有哪些是KWrite所沒有的?
關鍵問題是:如果「純粹而簡單的」文字編輯幾乎相同, 為什麼要從KWrite換Kate? 答案就在於你作為程式設計師或處理複雜專案時圍繞文字的所有內容:面板、插件、會話和終端。
凱特補充道 側邊欄可以查看檔案系統或項目目錄此外,它還處理「專案」的概念,因此可以將檔案相互關聯(例如,將 .cpp 檔案與其 .h 檔案關聯,或將相同模組的多個設定檔關聯),並為您提供更智慧的導航。
還包括一個 整合終端,配備按鍵(通常為F4)這樣,您無需離開編輯器即可執行命令、編譯、啟動腳本或使用控制台工具。您甚至可以將文件內容直接傳送到終端,從而顯著節省開發和腳本編寫時間。
另一個優點是 會話管理Kate 可以保存不同的視窗、標籤頁、開啟的項目和首選項配置,因此您可以為每種類型的工作建立不同的設定檔(例如,一個環境用於 C++,另一個用於 Web 編輯,另一個用於文件註解等)。
還有,凱特 它支援多種插件。 這些擴充功能增加了許多進階特性:例如與語言伺服器 (LSP) 整合以實現智慧型自動補全、靜態分析、增強型終端、偵錯、特定語言工具等等。正是這種擴展生態系統,使得 Kate 實際上成為了許多開發者的迷你 IDE。
出於以上種種原因,許多用戶將凱特描述為 一款非常全面的程式設計師工具KWrite 雖然被視為「簡潔」的編輯器,適合快速或簡單的任務,但其底層仍具有強大的功能。
介面和行為方面的實際差異
當你把這兩個視窗並排比較時,你會發現 KWrite 的介面和 Kate 的介面幾乎完全相同。 它們共享的元素有:工具列、文字區域、側邊迷你視圖、基本選單…主要區別在於附加面板和視圖。
在 KWrite 中 你不會看到側面的工具視圖。 這些功能在 Kate 中也出現在專案資源管理器、停靠終端和其他插件面板中。工具列和 URL 列(檔案路徑)的預設設定也會改變;這些設定可以根據模式啟用或停用。
在行為層面上,KWrite 它不共用實例或會話每次打開它,它都像一個獨立的編輯器,不會進行高級會話管理。它也不會載入複雜的插件,所以你無法使用 Kate 提供的一些「高級」功能。
兩者都可以使用 行為非常相似的標籤頁開啟多個文件、快速開啟、將視圖拆分為面板等功能,相較於20年前KWrite嚴格的單視窗版本,是一項顯著的改進。如今,由於與Kate的程式碼共享,KWrite能夠在不影響其他功能的情況下支援標籤頁。
實際應用:從輕度編輯到專業開發
KDE 使用者對於何時使用 KDE 有相當明確的看法。 使用 KWrite、Kate 甚至 KDevelop 都是合理的。總的來說,KWrite 被認為是最輕量級的,KDevelop 是最笨重的,面向大型項目,而 Kate 則介於兩者之間,非常適合不需要大型 IDE 的程式設計師的日常工作。
許多KDE新手都會問應該選擇哪一個,通常的答案是這樣的: 如果你只是想編輯文字、做筆記或運行一些腳本或設定文件,KWrite 就綽綽有餘了。如果你經常編程、處理大量文件,並且喜歡專案、整合終端和會話等功能,那麼 Kate 更適合你。
甚至有些用戶,即使不使用 KDE 作為其主要桌面環境, 他們繼續依賴 KWrite,因為他們喜歡它在簡潔性和強大功能之間的平衡。一個典型的例子是,XFCE 中的某些人維護一些 KDE 應用程序,例如 Krusader 或 KWrite,因為這些應用程式對他們來說至關重要,並且他們會調整依賴項以避免他們認為的「臃腫」(例如,如果他們沒有利用 kactivities、knewstuff 或 kuserfeedback 等組件)。
也有人試圖這樣做。 尋找 KWrite 的非 KDE 替代方案 (例如某些獨立的 GTK 或 Qt 編輯器),但在測試中,他們發現這些編輯器缺少一些關鍵功能,例如區塊編輯模式(部分垂直選擇行)或在註釋多行時缺乏穩定性。在找到能夠滿足所有這些功能的替代方案之前,他們最終還是選擇繼續使用 KWrite 作為主要工具。
KDE 環境中的其他編輯器:KDevelop 和 KEdit
在 KDE 生態系中,並非所有東西都是 KWrite 和 Kate; 還有其他與文字編輯和開發相關的應用程式例如 KDevelop 或老牌軟體 KEdit。
KDevelop 是一個 完整的整合開發環境,體積更大它專為大型專案、複雜重構、整合調試、嚮導和各種工具而設計,並採用 KTextEditor 作為其編輯引擎。因此,如果您習慣使用 Kate 或 KWrite,寫作體驗會非常熟悉,但在介面和資源需求方面,它完全是另一個層面的產品。
KEdit方面 在某些環境中,它仍然作為一種替代編輯器存在。其歷史特性之一是支援雙向文本,這對於從右到左的語言尤其重要。它曾是 kdeaddons 包的一部分,並在文本類型方面服務於特定的領域。
總之,現今的 KDE 使用者大多在以下環境中操作: KWrite 是一款輕量級編輯器, Kate 作為一個高級編輯環境 如果您需要更多功能,可以使用 KDevelop 作為專門的 IDE。
許可、技術和維護
從技術層面來說,KWrite(以及延伸出來的 Kate) 它是用 C++ 寫的,介面使用了 Qt。 它以 LGPL 許可證發布。這使其成為自由軟體,可以整合到其他專案中,並由 KDE 社群內一個相當大的開發團隊維護。
他們的程式碼庫是 託管在 KDE 基礎設施上,並鏡像到 GitHub 等平台。這既適用於編輯器本身,也適用於底層框架,例如 KTextEditor 和 KSyntaxHighlighting。此外,還有錯誤追蹤系統,用戶可以在其中報告錯誤並監控其解決情況。
團隊不斷鼓勵 新的合作者加入開發無論是添加功能、完善細節還是提高效能,KWrite 和 Kate 現在共享幾乎所有程式碼的事實意味著每個修復或改進都會自動影響這兩個編輯器,從而減少重複工作並提高整體品質。
在實踐中,這意味著 任何進入程式碼庫的小改進都會惠及整個 KDE 編輯器生態系統。不僅對 Kate 和 KWrite 而言如此,對使用其框架的應用程式也是如此,這鞏固了它們在 Plasma 桌面中的參考地位。
從整體來看,對於 KDE 的最終用戶而言,如今很難找到比這更好的平衡點了。 像 KWrite 這樣輕量級但功能強大的編輯器 y Kate 是一款功能全面的開發工具。尤其值得注意的是,兩者並行運行,共享同一基礎,互不衝突,並涵蓋了從最簡單的記事本使用到非常苛刻的程式設計工作流程的所有內容。