跳转至

Kate

軟件簡介

Kate 是一個具有眾多功能的跨平台文本編輯器。Kate 還附帶了多種插件,包括一個嵌入式終端,可以讓你直接從 Kate 中啓動控制枱命令,強大的搜索和替換插件,以及一個預覽插件,可以渲染 MD、HTML 甚至 SVG 文件。支持通過交換文件在系統崩潰時恢復數據,帶參數提示的自動補全,同時支持 LSP (Language Server Protocol) 以獲得更為強大的補全。

下載與安裝

可打開 Kate 官網,然後進入 獲取頁面。隨後,根據你使用的系統和喜歡的安裝方式進行安裝。

用法與功能

交換文件防止數據丟失

與 Vim 類似,Kate 會將未保存的更改寫入一個交換文件(一般是原文件名前面加點後面加 .kate-swp),如果遭遇斷電或程序崩潰等意外,下次啓動時不會丟失未保存的更改。

代碼高亮

Kate 支持三百餘種語言的語法高亮。一般來説,Kate 可以自動地選擇對應的語言進行語法高亮,不過偶爾也有錯誤的時候,這時候可以點擊最右下角的按鈕,選擇正確的語言。

自己編寫語法高亮文件

儘管 Kate 支持超過三百種語言的語法高亮,但是仍不免有語言未被覆蓋到,此時可以自己動手編寫語法高亮文件。 Kate 自身自帶的文件位於 Syntax Highlighting Powered By KSyntaxHighlighting Framework,語法可參照 Working with Syntax Highlighting,編寫好的文件根據 Syntax definition files 放置。CoelacanthusHex/dotfiles@80a913c/pam_env.xml 有筆者編寫的一個配置文件可供參考。

切換語言

點擊上方工具欄裏的 設置/Setting,然後點擊 配置語言/Configure Language,隨後選擇語言即可,注意可以選擇備選語言。

編碼與行尾符

Kate 可以自動識別當前文件使用的是什麼編碼,如果識別錯誤,可以點擊右下角倒數第二個按鈕,選擇正確的編碼。

同時,Kate 也可以自動識別當前文件使用的行尾符,如果識別錯誤,可以點擊 工具行尾/ToolEnd of line 選擇正確的行尾符。

查找與替換

依次單擊 編輯查找(快捷鍵Ctrl+F)即可打開「查找」頁面。依次單擊 編輯替換(快捷鍵Ctrl+R)即可打開「查找與替換」頁面。同時,點擊左下角 搜索與替換 也可打開「查找與替換」頁面。

具體操作和其他編輯器並無太大差別,但是支持一些額外的特性,例如:

  1. 是否區分大小寫
  2. 支持正則表達式(包括捕獲組)
  3. 從當前文件到多文件再到當前工程不等的範圍
  4. 對查找的結果進行選擇替換

Language Server Protocol

Kate 自 19.12 起支持 LSP Client,最初僅支持 C/C++、D、Fortran、Go、Latex/BibTeX、OCaml、Python、Rust,現如今支持如下表中的語言:

語言 LSP Server
Bash bash-language-server
LaTeX texlab
BibTeX texlab
C clangd
C++ clangd
D serve-d
Fortran fortls
Go gopls
Haskell haskell-language-server-wrapper
JavaScript typescript-language-server
OCaml ocamllsp
Perl Perl-LanguageServer
Python pyls
Rust rls
TypeScript typescript-language-server
R RLanguageServer
zig zls

要啓用 LSP 相關特性,需要前往菜單欄中 設置配置 Kate 然後選擇 插件LSP 客户端 以啓用相關特性。當打開對應語言的文件時,Kate 會自動拉起對應的 LSP Server。

增加配置

此外,用户還可以手動編寫配置,具體格式為:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
    "servers": {
        "bibtex": {
            "use": "latex",
            "highlightingModeRegex": "^BibTeX$"
        },
        "c": {
            "command": ["clangd", "-log=error", "--background-index"],
            "commandDebug": ["clangd", "-log=verbose", "--background-index"],
            "url": "https://clang.llvm.org/extra/clangd/",
            "highlightingModeRegex": "^(C|ANSI C89|Objective-C)$"
        },
        "cpp": {
            "use": "c",
            "highlightingModeRegex": "^(C\\+\\+|ISO C\\+\\+|Objective-C\\+\\+)$"
        },
        "haskell": {
            "command": ["haskell-language-server-wrapper", "--lsp"],
            "rootIndicationFileNames": ["*.cabal", "stack.yaml", "cabal.project", "package.yaml"],
            "url": "https://github.com/haskell/haskell-language-server",
            "highlightingModeRegex": "^Haskell$"
        },
        "latex": {
            "command": ["texlab"],
            "url": "https://texlab.netlify.com/",
            "highlightingModeRegex": "^LaTeX$"
        },
        "rust": {
            "command": ["rls"],
            "rootIndicationFileNames": ["Cargo.lock", "Cargo.toml"],
            "url": "https://github.com/rust-lang/rls",
            "highlightingModeRegex": "^Rust$"
        }
    }
}

其中 server 裏的每一項代表一種語言,在這個語言裏,command 代表啓動 LSP Server 所使用的命令,command 是一個數組,是所需要執行的命令以空格分詞的結果;url 是 LSP 的網址;rootIndicationFileNames 是用於確定項目根目錄的文件;highlightingModeRegex 則匹配某種語法高亮的名字,以確定使用哪個 LSP;如果存在 use 項,則代表使用 use 項對應的語言的配置。

該配置項位於 設置配置 KateLSP 客户端用户服務器設置,其中 LSP 客户端 部分要在 插件 中啓用 LSP 客户端 插件後才可見。

內置終端

注意

內置終端依賴了 KDE 的 Konsole1,而 Konsole 為 * nix 獨有包。也就是説,Windows 下該特性不可用。

F4可打開或關閉內置終端,也可點擊左下角 終端 按鈕打開,內置終端的當前目錄會自動與當前文件保持一致,並隨着你選擇的文件而改變。其餘與一般終端並無太大不同。

外部工具

點擊 工具外部工具 可執行。

點擊 工具外部工具配置 可以配置外部工具。

添加外部工具

從預置配置中添加

進入配置頁面後,點擊左下角 添加從默認工具添加,然後點擊對應工具即可。

手寫配置添加

進入配置頁面後,點擊左下角 添加添加工具,然後按提示填寫即可。可以參照 此文檔(英文) 來編寫自己的外部工具配置。注意可點擊如下標誌查看可使用的變量。

常用的外部工具

編譯並執行單個 C++ 文件

在 * nix 系統下,打開任意 C++ 源文件,在外部工具裏找到 編譯執行 cpp,點擊即可。

對於 Windows 用户

在默認情況下,由於該工具的可執行文件為 sh,使得該工具在 Windows 下不可用。然而,用户可以對該工具進行修改,使其可用於 Windows 系統。

要進行修改,請先確保你的系統內有一個可用的 C++ 編譯器。然後從默認工具添加 編譯運行 cpp,將其中 可執行文件sh 改為 powershell,參數改為 -ExecutionPolicy Bypass -Command "g++ %{Document:FilePath} -o %{Document:FileBaseName}.exe;./%{Document:FileBaseName}.exe" 23即可。

Git Blame

打開任意文件,在外部工具裏找到 git blame,點擊之後,會打開一個窗口,展示 git blame 的結果。

格式化

格式化功能要求對應包或應用程序可用,例如,C/C++ 的格式化要求 clang-format 可用。對於其他語言,用户可以前往外部工具配置中查看其默認可執行文件作為參考。

打開任意源文件,在外部工具裏找到 用 xxx 格式化,點擊即可。另外,對於 C/C++ 語言的源文件,clang-format 可格式化選中的文本。

Git Blame

要啓用該特性,需要前往菜單欄中 設置配置 Kate 然後選擇 插件Git Blame

啓用該特性後,Kate 會在每一行後面以較淺字體顯示在 Git 中最後於什麼時間被誰修改,將鼠標移動到文字上會出現一個懸浮窗顯示 commit 的具體信息。

相關外部鏈接

參考資料與腳註


  1. Arch Linux 中對該包的描述 中,其可選依賴了 konsole,描述為 open a terminal in Kate(在 Kate 中打開一個終端)。 

  2. g++ 不在 PATH 環境變量中,則將其改為編譯器的絕對路徑 

  3. 或者,如果使用 Clang,則將 g++ 改為 clang++。