說明
jmacs(1) 是 joe(1) 編輯器的 Emacs 模擬模式,旨在讓 JOE 的操作行為與快捷鍵更貼近經典的 Emacs。
核心定位
在現代開發環境中,jmacs 扮演著以下角色:
- 純文字界面的程式碼編輯器:專為命令列環境打造。
- 資源受限環境下的 Emacs 替代方案:免去繁瑣的設定檔折騰,開箱即可獲得約 80% 的 Emacs 操作體驗。
- 輕量且功能完備:通常內建語法高亮(Syntax Highlighting)等現代特性,在程式碼編輯上比
nano(1)更為友善。 - 實用工具定位:多數系統預設並未安裝此套件。建議行有餘力時,仍應掌握
vi(1)的基本操作以備不時之需。
學習心態
如同學習多數 Unix 命令列工具一樣,您不需要記熟所有熱鍵才開始使用 jmacs。
最有效率的學習路徑是:先掌握最核心的幾組快捷鍵,並直接在實際工作中開始使用。隨著使用頻率與時間的累積,其餘的熱鍵自然會融入您的肌肉記憶中。
安裝
Ubuntu / Linux Mint / Debian
$ sudo apt install joe
RHEL / Fedora / Rocky / Alma
$ sudo dnf install joe
SLES / openSUSE
$ sudo zypper install joe
核心概念與架構
jmacs 繼承了 Emacs 的核心哲學,與 vi 著名的「模態切換(Modal Editing)」不同,jmacs 沒有模式的概念。它完全依賴 Ctrl、Meta (Alt) 等組合鍵來觸發各項編輯指令。
與正統 Emacs 最大的不同在於:
- 免除 Lisp 負擔:JOE 編輯器不使用複雜的 Emacs Lisp 作為設定檔語言。
- 隨開即用(Out of the Box):在絕大多數場景下,您完全不需要任何前置設定即可流暢操作。
- 純文字組態:若有客製化需求,只需修改簡單的純文字設定檔即可,極具輕量化優勢。
基本指令
當您首次進入 jmacs 的世界,掌握以下幾組核心指令即可確保基本的編輯與操作流程。
開啟 jmacs
不帶參數的話,會直接進入空白的 jmacs 互動式環境:
$ jmacs
啟動 jmacs 時加上參數,進入互動式環境並開始編輯特定檔案:
$ jmacs path/to/file.txt
開啟檔案(Ctrl-x Ctrl-f)
依序按下 Ctrl-x 與 Ctrl-f,jmacs 底部便會出現提示列,要求使用者輸入檔案路徑與名稱。輸入完成後即可開啟該檔案並開始編輯。
離開編輯器 (Ctrl-x Ctrl-c)
按下 Ctrl-x 接著按下 Ctrl-c 即可退出。若檔案在編輯過程中曾有變更,系統會主動詢問您是否需要存檔。
儲存檔案
儲存原檔(Ctrl-x Ctrl-s)
依序按下 Ctrl-x 與 Ctrl-s,即可將當前的編輯內容直接儲存至磁碟。
另存新檔(Ctrl-x Ctrl-w)
依序按下 Ctrl-x 與 Ctrl-w,jmacs 底部會出現提示列,輸入新的檔案名稱後即可另存新檔。
中止當前指令 (Ctrl-g)
如果您不小心按錯快捷鍵,或是處於不明的指令輸入狀態,隨時按下 Ctrl-g 即可撤銷當前操作,安全回到預設的編輯狀態。
線上熱鍵指南 (Ctrl-x Ctrl-h)
按下 Ctrl-x 接著按下 Ctrl-h,畫面上方會跳出內建的快捷鍵導覽(再次輸入相同快捷鍵即可關閉)。
💡 快捷鍵符號解讀提示
由於內建的導覽介面較為精簡,初學者往往不易閱讀。以下為您整理核心的符號對應規律:
^符號:代表Ctrl鍵(例如:^X即為Ctrl-x)。^[符號:代表Meta鍵(在現代鍵盤上通常為Alt或Option鍵)。- 大小寫符號:導覽中的大寫字母(如
^X),在實際操作時輸入小寫字母即可。 - 組合鍵拆解:部分看似雙鍵的指令,實務上需要搭配
Shift鍵。例如導覽顯示^_,在標準鍵盤上其實是按下Ctrl + Shift + -(因為Shift + -才會觸發下底線_)。
移動游標
| 動作 | 前進 | 後退 |
|---|---|---|
| 水平移動游標 | Ctrl-f |
Ctrl-b |
| 垂直移動游標 | Ctrl-n |
Ctrl-p |
| 移動一個字 | Meta-f |
Meta-b |
| 移動整行 | Ctrl-e |
Ctrl-a |
| 捲動整頁 | Ctrl-v |
Meta-v |
搜尋文字
| 動作 | 前進 | 後退 |
|---|---|---|
| 搜尋 | Ctrl-s |
Ctrl-r |
背景執行與工作控制
在專案編輯到一半時,你可以按下 Ctrl-z 暫時將 jmacs 掛起並跳回終端機。在執行完所需的命令列指令後,只要輸入 fg 就能立刻喚回 jmacs 繼續編輯。
由於 jmacs 採取輕量化設計,這種利用 Shell 工作控制(Job Control)的方式,比在編輯器內部實作命令列輸入更為純粹且高效,同時也免去了在編輯器內處理指令輸出重導向的繁瑣步驟。
緩衝區(Buffer)
在 jmacs 中開啟檔案時,系統會將檔案內容載入到記憶體中的緩衝區(Buffer)進行編輯,而不會直接更動原始檔案。
由於 JOE 誕生於文字終端機時代,因此它習慣以 Buffer 來管理多個檔案,而非現代編輯器的分頁或多視窗概念。
| 動作 | 指令 | 附註 |
|---|---|---|
| 切換緩衝區 | Ctrl-b |
切換至下一個 Buffer |
| 關閉緩衝區 | Ctrl-k |
關閉當前的 Buffer |
需要特別注意的是,jmacs 作為一款輕量化編輯器,並沒有提供內建的緩衝區列表(Buffer List)功能。為了避免迷失在檔案群中,建議不要同時開啟過多的 Buffer。
視窗(Window)
jmacs 支援將畫面分割為上下兩個視窗。這兩個視窗可以同時呈現同一個檔案的不同位置,也可以分別顯示不同的檔案。
| 動作 | 指令 | 附註 |
|---|---|---|
| 分割視窗 | Ctrl-x 2 |
可多次分割畫面 |
| 切換視窗 | Ctrl-x o |
移動游標至另一個視窗 |
| 放大當前視窗 | Ctrl-x ^ |
增加當前視窗的高度 |
| 關閉當前視窗 | Ctrl-x 0 |
隱藏目前的視窗 |
| 關閉其他視窗 | Ctrl-x 1 |
獨佔畫面,只保留當前視窗 |
值得注意的是,這裡的「視窗(Window)」指的是文字終端機內的區塊分割,而非現代作業系統中的圖形化視窗。
排除環境熱鍵衝突
在終端機環境下使用 jmacs 時,有時會遇到按了快捷鍵卻毫無反應的情況。這通常是因為桌面環境(Desktop Environment)或終端機模擬器(Terminal Emulator)的系統熱鍵與編輯器產生了衝突。
當熱鍵被上層系統攔截時,jmacs 就無法接收到對應的指令。
常見衝突與解決方案
Alt鍵衝突:許多 Linux 桌面環境預設將Alt鍵用於視窗操作(如移動視窗、選單快捷鍵)。- 排除方式:為了維持流暢的編輯體驗,建議前往系統的「鍵盤快捷鍵」設定中,將相衝突的環境熱鍵停用,或將其改綁定為
Super(Windows 鍵),以確保jmacs能夠如預期般正常運作。