這本手冊怎麼讀
四個部分、十四章,不必從頭讀到尾。
手冊分成四部:第一部講觀念與安裝(爾雅是什麼、怎麼裝、畫面怎麼看)、第二部講基本編輯(開檔、打字、搜尋、復原)、第三部講進階功能(編碼、大型檔案、十六進位、雙欄比對)、第四部是設定與附錄(改快捷鍵、換語言、查表)。
編號規則是「部-章」,例如 3.4 是第三部第四章;章裡面的小節再加一碼,例如本節是 1.1.1。內文寫「見 4.1」就是叫你翻到第四部第一章,左邊選單點得到。
三種讀法
- 第一次用爾雅:把第一部 1.1 到 1.3 讀完,再讀 2.1(開檔與儲存)。四章讀完就能正常工作了。
- 已經會用其他編輯器:直接看 1.3(畫面)與 4.4(快捷鍵一覽),需要什麼再回頭翻。習慣 nano 或 vim 的人記得先看 4.1,換一套按鍵配置比重新學快得多。
- 只是臨時要開一個檔來看:1.2.5 講怎麼啟動,1.3 講畫面,Ctrl+X 離開。三分鐘。
左上角的搜尋框(或按 ⌘K / Ctrl+K)會做兩件事:一是把本章內文的關鍵字標成黃色,按 Enter 逐一跳過去;二是列出其他章節裡談這個主題的篇章,直接點就跳過去。畫面示意圖上的字也在搜尋範圍內。
手冊裡出現 Ctrl+S 這種標示代表按鍵,~/.config/erya/keymap.toml 這種灰色標示代表檔案路徑或指令。要注意的是爾雅的快捷鍵可以整套換掉(見 4.1),手冊一律以內建的 Erya Terminal Safe 預設配置為準;如果你換過配置,實際按鍵請以畫面第二列的提示列與 F1 說明為準——那兩個地方顯示的永遠是你當下真正在用的鍵。
內容依照目前的程式碼撰寫,不寫規劃中的功能,也不寫「應該要怎樣」。看到某個功能在手冊裡被標成「預設沒有綁按鍵」或「這個模式下不支援」,那就是現在的實際狀況。
爾雅在做什麼、不做什麼
一句話:它是一套跑在終端機裡、為中文文件而寫的文字編輯器。
爾雅 Erya 的名字取自「爾,近也;雅,正也」,是三十年前 DOS 上《漢書》中文文書系統的 Rust 重生。它以規格驅動、文件先行的方式從零重寫,不含原《漢書》的任何原始程式碼或資產,與原開發團隊也沒有隸屬關係。
它跑在終端機裡(Terminal、iTerm2、Windows Terminal、SSH 連線都算),啟動之後佔滿整個視窗,離開之後把視窗還原成原本的樣子。畫面長這樣:
| 爾雅做這些 | 爾雅不做這些 |
|---|---|
| 開啟、編輯、儲存純文字檔 | 排版、字型、粗體斜體(它不是 Word) |
| UTF-8/UTF-8 BOM/Big5/GBK/Shift_JIS 的偵測與轉換 | UTF-16、UTF-32 等寬字元編碼(開啟時會直接回報不支援) |
| 多頁籤、搜尋取代、復原重做 | 分割視窗、同時看同一個檔的兩個地方 |
| 依副檔名自動語法高亮 | 語法檢查、自動完成、跳到定義(它不是 IDE) |
| TOML/YAML/JSON 的格式化 | 其他語言的格式化(不會呼叫外部工具) |
| 十六進位檢視與二進位檔案的位元組編輯 | 反組譯、結構解析(它不是 010 Editor) |
| 雙欄檔案比對與差異互抄 | 三方合併、版本控制整合(沒有 Git 功能) |
| 64 MiB 以上大檔的唯讀閱讀與 log 跟隨 | 在大型檔案模式下編輯內容 |
| 常用語與按鍵巨集 | 外掛、腳本語言、套件管理 |
爾雅沒有「自動存檔」,也沒有離開時的暫存還原。沒有按過 Ctrl+S 的內容只活在記憶體裡。它會在你關頁籤或離開時攔下來問你要不要存(見 2.1.8),但如果整個終端機被關掉、SSH 斷線、機器當掉,未存的內容就是沒了。
和 vim、nano 有什麼不一樣
最短的答案:不用背模式,而且中文是第一等公民。
終端機編輯器不缺,爾雅想解決的是很具體的一組問題:中文文件在終端機裡常常對不齊、編碼常常轉壞、舊檔案常常是 Big5。所以它在幾件事上跟其他編輯器不一樣。
| 爾雅 | vim | nano | |
|---|---|---|---|
| 要不要切模式 | 不用。打開就能打字 | 要。指令模式/插入模式 | 不用 |
| 怎麼知道能按什麼 | 第二列永遠列著常用鍵,F1 有完整清單 | 要先學 | 底下兩列列著常用鍵 |
| 中文編碼 | 自動偵測,狀態列常駐顯示,F7 直接轉 | 要下指令設 fileencoding | 不處理 |
| 全形對齊 | 依終端欄寬計算,全形字算兩欄 | 大致可以 | 大致可以 |
| Emoji 與組合字 | 依 Unicode 字素叢集移動與刪除 | 視版本而定 | 常會拆開 |
| 矩形選取 | 內建,可填字、可整塊搬 | 有(Ctrl+V 區塊模式) | 沒有 |
| 雙欄比對 | 內建 F4 | 要開 vimdiff | 沒有 |
| 十六進位 | 內建 Ctrl+P | 要接 xxd | 沒有 |
| 改快捷鍵 | 一份 TOML,附十二套現成配置 | vimrc(很強但要學) | nanorc(有限) |
keymap/ 目錄裡附了 nano、vim、emacs 三套配置,還有 VSCode、Visual Studio、IntelliJ、Eclipse 與 macOS 版本。按 F2 選一套按 Enter 就換過去了,不必改設定檔(見 4.1.3)。
系統全景:五塊功能
爾雅的每一個畫面都可以歸到這五塊其中之一。
要注意:這五塊沒有選單可以點。爾雅沒有下拉式功能表,所有功能都靠快捷鍵叫出來。找不到某個功能時,按 F1 開啟完整按鍵說明,那份清單就是功能總表(見 1.3.8)。
一份文件的一生
從開啟到寫回磁碟,會經過這五站。
- 開啟。啟動時在命令列後面接檔名,或在編輯器裡按 Ctrl+O 叫出檔案對話盒。同一個路徑如果已經開在某個頁籤,爾雅會直接切過去,不會重複開兩份(2.1.1)。
- 判斷型態。爾雅會先看檔案多大、前 8 KiB 有沒有 NUL 位元組,再決定用哪一種模式打開,同時把編碼猜出來(3.1.1)。
- 編輯。一般文字檔在這裡度過大部分時間。每個頁籤各自保有自己的游標位置、搜尋條件與最多 100 步的復原紀錄(2.4.1)。
- 轉格式(可略過)。要把 Big5 舊檔轉成 UTF-8、或把 CRLF 換成 LF,就在存檔前按 F7/F8。轉換不會立刻寫檔,是在下一次儲存時才生效(3.1.2)。
- 儲存。Ctrl+S 會先寫到同目錄的暫存檔、再原子換掉原檔,Unix 上還會保留原本的檔案權限(2.1.6)。
三種人、三條路線
先確認你是哪一種,再決定要讀哪幾章。
寫中文文件的人
用爾雅寫稿、整理筆記、處理舊文件
- 開檔、頁籤、儲存
- 搜尋取代、復原
- 編碼與換行轉換
- 段落重排、常用語
路線:1.2 → 1.3 → 2.1~2.4 → 3.1
在伺服器上改設定檔的人
SSH 進去改 conf、看 log、比對兩份設定
- 命令列選項與環境變數
- 語法高亮與 TOML/YAML/JSON 格式化
- 大型檔案與 log 跟隨
- 雙欄比對兩份設定檔
路線:1.2 → 1.3 → 2.1 → 3.1 → 3.2 → 3.4
想把它調成順手的人
要改快捷鍵、換語言、或給團隊統一設定
- 十二套內建按鍵配置
- 按鍵配置編輯器與另存
- 設定檔放哪裡會被讀到
- 介面語言與自訂翻譯
路線:1.3 → 4.1 → 4.2 → 4.4
一個人身兼多角是常態。如果三種都是你,建議照第一部、第二部的順序走一遍,第三部與第四部等需要時再翻。
先記住這六件事
看完全書會再遇到,但先在這裡放著。
- 沒有自動存檔。爾雅不會幫你偷偷存檔,也沒有崩潰還原。Ctrl+S 是唯一寫入磁碟的動作(2.1.5)。
- 離開是 Ctrl+X,不是 Ctrl+C。Ctrl+C 在預設配置裡是「複製」,不是中斷程式。真正的離開鍵是 Ctrl+X,關頁籤是 F11(2.1.3)。
- 快捷鍵可以整套換掉,所以手冊寫的不一定等於你按的。畫面第二列與 F1 顯示的永遠是你當下真正在用的鍵(4.1)。
- 編碼與換行是「下一次儲存」才生效。按 F7/F8 只是換掉狀態列上的標示,檔案要等你存檔才真的變(3.1.2)。
- 有三種模式不能編輯內容。大型檔案唯讀模式、十六進位檢視(對文字檔而言)、串流二進位檔案。狀態列會直接寫出來你在哪一種(3.2、3.3)。
- 矩形選取和自動換行不能同時用。兩者的座標系統會打架,所以爾雅讓它們互斥;開著一個時想開另一個,會被訊息列擋下來(2.2.5)。
名詞去哪一章看
本章出現過的詞,詳細說明在這些地方。完整清單見 4.4.8。
| 名詞 | 一句話解釋 | 詳見 |
|---|---|---|
| 頁籤 | 同時開著的多個檔案,每個各自記得游標與復原紀錄。 | 2.1.3 |
| 提示列 | 畫面第二列,永遠列著目前這個畫面能按的鍵。 | 1.3.3 |
| 狀態列 | 倒數第二列,顯示檔名、行欄、模式、編碼與換行格式。 | 1.3.5 |
| 訊息列 | 最後一列,操作結果與確認問題都出現在這裡。 | 1.3.6 |
| 按鍵配置 | 一份把「動作」對應到「按鍵」的 TOML,可以整套換。 | 4.1 |
| 字素叢集 | 螢幕上看起來是一個字的單位,可能由好幾個碼位組成。 | 2.2.3 |
| 矩形選取 | 選一個長方形範圍,可以填字,也可以整塊搬動。 | 2.2.5 |
| 大型檔案模式 | 64 MiB 以上自動進入的唯讀閱讀模式。 | 3.2 |
| 十六進位檢視 | 把文件攤成位元組看,一般文字檔是唯讀的。 | 3.3 |
| 二進位檔案 | 含 NUL 或無法解碼的檔案,開啟時直接進位元組檢視。 | 3.3.5 |
| 暫存副本 | 雙欄比對時的工作檔;沒套用之前原始檔不會變。 | 3.4.1 |
| 常用語 | 收錄起來重複插入的字串,存成 JSON。 | 2.4.3 |
| 巨集 | 錄下來重播的一串按鍵,存成 JSON。 | 2.4.6 |
| 原子儲存 | 先寫暫存檔再換掉原檔,中途斷電也不會半截。 | 2.1.6 |