Spacemacs
Spacemacs 是一款基於 Emacs 構建、採用 Vim 按鍵綁定方案的可擴展文本編輯器。該項目旨在融合 Vim 與 Emacs 編輯器的優勢,取其精華。Spacemacs 的發行版基於社區驅動的 Emacs 配置,不僅大幅擴展了 Emacs 的默認行為,更增添了諸多額外功能。
安裝
安裝 Emacs
Spacemacs 是基於 Emacs 構建的,因此我們需要先安裝 Emacs。
備份舊的 Emacs 配置 (可選)
若您曾使用過Emacs,請務必備份之前的配置文件。
$ mv ~/.emacs.d ~/.emacs.d.bak && mv ~/.emacs ~/.emacs.bak
安裝 Spacemacs
要安裝 Spacemacs,我們需要從 GitHub 克隆一個實際配置,並完全替換 Emacs 的配置。
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
安裝 Adobe Source Pro fonts (可選)
Spacemacs 默認使用的字體是 Source Code Pro by Adobe. 若需使用該字體,建議在系統中安裝。
如果未找到指定字體,則回落到一個可用字體。
移除 Emacs 配置文件
(如果需要)備份並刪除 ~/.emacs 文件,否則,Spacemacs 將無法加載,因為該文件會阻止 Emacs 加載正確的初始化文件。你可以通過以下方式重命名它:
$ mv ~/.emacs ~/.emacs.bak
你也可以不備份就刪除它:
$ rm ~/.emacs
第一次運行 Spacemacs
下面首次運行Emacs:
$ emacs
第一次你應該被要求選擇要安裝的功能。所有選項都是可替代的,所以無論如何都必須選擇某個選項。這些選擇會影響一些 Spacemacs 的行為和快捷鍵。建議選擇默認值,只需按 Enter 鍵。默認值已經相當優化,你之後可以隨時更改它們。
完成配置問答後,Spacemacs 會自動下載並安裝所有依賴插件,整個過程可能需要幾分鐘。期間 Spacemacs 界面看似卡住,屬於正常情況。
啟動 Spacemacs
直接執行以下命令即可啟動:
$ emacs
當底部狀態欄不再顯示 ... 類加載進度提示時,就代表 Spacemacs 已就緒可用。
守護進程模式
Spacemacs 支持以守護進程模式運行。守護進程模式只會初始化一次編輯器,後續可直接連接進程,無需重複讀取配置文件。適合配置文件體量很大的場景,僅需完成一次初始化,之後隨時都能快速連接使用。
以守護進程模式啟動 Spacemacs:
$ emacs --daemon=instance1
後續可通過 emacsclient 連接 instance1 實例:
$ emacsclient -nc -s instance1
systemd 自啟配置
你可以創建 systemd 服務來常駐運行 Emacs 守護進程。出於社區 ELPA 插件安全等因素考量,推薦以普通用戶權限配置 systemd 用戶級服務,配置方式如下。
新建 Emacs 用戶系統服務文件:
.config/systemd/user/emacs.service
[Unit] Description=Emacs text editor Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/ [Service] Type=forking ExecStart=/usr/bin/emacs --daemon=instance1 ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" Restart=on-failure [Install] WantedBy=default.target
按以下內容修改 Emacs/Spacemacs 桌面入口文件,重點修改 Exec 欄位,其餘配置僅為界面美化:
/usr/share/applications/emacs.desktop
[Desktop Entry] Name=Spacemacs GenericName=Text Editor Comment=Edit text MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; Exec=emacsclient -nc -s instance1 %F Icon=/home/[!!! YOUR USER NAME HERE !!!]/.emacs.d/assets/spacemacs.svg Type=Application Terminal=false Categories=Development;TextEditor; StartupWMClass=Emacs Keywords=Text;Editor;
執行守護進程配置重載,再啟動 emacs.service 用戶服務單元。
檢查是否出現運行報錯。如果你之前手動配置過 Emacs 守護進程且存在異常,建議啟用剛創建的用戶服務後重啟系統,多數問題都能解決。也可以查看 emacs.service 單元運行狀態排查故障。確認正常後,啟用該用戶服務實現開機自啟。
配置完成後,可通過桌面環境啟動器打開 Spacemacs,加載速度會大幅提升;即便在高性能設備上,也依舊無法做到瞬時秒開。你可以為連接命令設置別名,instance1 可自定義命名,但必須和服務文件內的守護進程名稱保持一致。
$ emacsclient -nc -s instance1
基礎使用
初次上手 Spacemacs 會有一定門檻,純新手尤為明顯,但熟悉後收益極高。只需掌握少量核心概念,就能完成日常基礎編輯工作。
隨時輸入 :q 按下回車鍵,即可退出 Spacemacs。
內置教程
在 Spacemacs 界面中按下 SPC h T,可打開官方內置入門教程。
基礎核心概念
前置準備
為講解基礎操作,我們先生成一段測試文本用於實操。暫時不用理解當下的快捷鍵,只需跟著步驟操作即可:
- 啟動 Spacemacs 按下
SPC b N新建空白緩衝區 按下9 SPC i l l自動生成測試文本
執行後會生成九行示例文本,後續所有命令練習都可以基於這段內容操作。
接下來介紹 Spacemacs 核心的編輯模式概念。
編輯模式
Spacemacs 與普通文本編輯器最大的區別就是編輯模式。不同模式下編輯器的按鍵行為完全不同:比如插入模式可以直接輸入文字(和普通編輯器一致),普通模式下所有按鍵都會被識別為編輯命令,不會輸入任何字符。
同一時間只能激活一種模式,熟練切換各類模式是用好 Spacemacs 的核心技能。
當前編輯模式會顯示在界面左下角,默認以帶數字「1」的彩色矩形標識,顏色對應不同模式。模式種類很多,日常只需掌握常用三種:
- 橙色:普通模式,用於輸入命令、光標導航
- 綠色:插入模式,用於文字輸入編輯
- 灰色:可視模式,用於選中文本、批量操作也可以通過光標顏色判斷當前所處模式。注意:使用 Spacemacs 至少需要掌握普通模式和插入模式。
普通模式
普通模式為默認模式,標識顏色為橙色,主要用於光標導航和執行編輯命令,無法直接輸入文字,適合快速移動光標、修改文本內容。
若不小心退出普通模式,隨時按下 ESC 鍵 或 連續按 fd 即可快速返回。
導航
對於基礎導航,可以使用以下按鍵:
-
h- 光標向左移動一個符號 -
j- 光標向下移動一行 -
k- 光標向上移動一行 -
l- 光標向右移動一個符號
你也可以使用單鍵在單詞甚至句子之間進行導航:
-
w- 移動到下一個單詞(詞首) -
b- 移動到上一個單詞(詞首) -
(- 移動到當前句子的句首 -
)- 移動到下一個句子的句首 -
^- 移動到行首 -
$- 移動到行尾
要滾動頁面,可以使用以下命令:
-
Ctrl+f- 向下翻一頁 -
Ctrl+b- 向上翻一頁 -
gg- 跳轉到文檔的第一行 -
G- 跳轉到文檔的最後一行
你還可以將數字與命令結合使用,使其重複 n 次:
-
5j- 將光標向下移動五行 -
7w- 將光標向前移動七個單詞 -
3 Ctrl+f- 向下翻三頁 -
20gg- 將光標移動到第 20 行
這裡還有很多未被發掘的命令。得益於類似於 Vim 的操作流,基本上你可以在 Spacemacs 中到處導航。請查閱附加資源以獲取詳細信息。
文本操作
你可以使用以下命令修改文本:
-
x- 剪切光標下的符號 -
dw- 剪切光標下的單詞 -
dd- 剪切光標所在的行 -
yw- 複製(拉取)光標下的單詞 -
yd- 複製(拉取)光標所在的行 -
p- 粘貼已複製/剪切的文本 -
ra- 將光標下的符號替換為 a
你也可以在此處使用數字參數。
撤銷/重做
你可以使用以下命令撤銷和重做更改:
-
u- 撤銷上次更改 -
Ctrl+r- 重做上次更改
插入模式
插入模式用於文本輸入。它的行為與普通編輯器非常接近。然而,其修改文本的能力有限。你需要切換回普通模式才能進行修正。插入模式的顏色為綠色。
進入
要從普通模式進入插入模式,請按 i。你的光標將變為一條綠色的細線。現在你可以輸入內容了。完成後,只需按下 ESC 鍵或 fd 鍵序列即可退出插入模式。
進入插入模式的方法有很多種。區別在於初始光標位置的不同。初次使用時,只需知道 i 快捷鍵就足夠了。但當你熟練掌握後,以下其他快捷鍵也會非常有用:
-
i- 在光標前進入插入模式 -
a- 在光標後進入插入模式 -
I- 在行首進入插入模式 -
A- 在行尾進入插入模式 -
o- 在下一行進入插入模式 -
O- 在上一行進入插入模式
退出
要離開插入模式,請按 ESC 鍵或 fd 鍵序列。你將返回普通模式,光標將變為橙色。
可視模式
此模式用於可視化文本選擇。它允許選擇文本塊並剪切/複製它們。該模式的顏色為灰色。
要從普通模式進入可視模式,請按 v 快捷鍵。然後你可以使用普通模式的快捷鍵進行導航,唯一的區別是:文本選擇。基於初始光標位置,光標的移動會選中文本,之後你可以使用 yank(複製)或 delete(刪除)它們。記住,你可以使用 ve 或 v( 等命令快速選擇單詞或句子。請參閱 普通模式:導航 章節以了解詳情。
你也可以按 V 快速選中整行。
可視塊模式
可視塊模式是可視模式的增強版本。它允許按列選擇文本。這類似於常規編輯器和 IDE 中的多光標概念。可以通過按下 Ctrl+v 快捷鍵進入此模式。然後你可以使用 h j k l 鍵進行導航以查看區別。
在可視塊模式下可以做很多事情。相關信息請參閱附加資源。該功能在 Vim 術語中被稱為vim 可視塊模式。
緩衝區
Spacemacs 中的文本位於稱為緩衝區的區域中。它們與常規編輯器的標籤頁非常相似。你可以在緩衝區之間切換並創建新的緩衝區。編輯器本身也使用緩衝區來存儲一些可供稍後檢查的信息。
導航
要顯示當前緩衝區列表,請按 SPC b b。你將在底部看到一個新窗口。這是你可以檢查、篩選和導航緩衝區的地方。那裡已經存在一些緩衝區,如 *Messages* 和 *scratch*。它們由編輯器創建,包含一些有用的信息。
你在底部窗口可以做的第一件事是在 pattern(模式)欄位中輸入任何內容。這將篩選緩衝區。如果篩選後沒有剩餘的緩衝區,你可以在輸入後直接按「Enter」創建一個新緩衝區。新緩衝區將被創建並打開。
你也可以手動打開任何緩衝區。按 Ctrl+j 或 Ctrl+k 在行之間導航。然後按 Ctrl+l 或 Enter 確認選擇。選中的緩衝區將被打開。
h j k l 鍵嗎?它們被廣泛用於導航。在某些情況下,我們需要使用像 Ctrl 這樣的修飾鍵。這樣可以同時進行輸入和導航。你也可以使用普通模式中的一些快捷鍵來控制緩衝區:
-
SPC b b- 列出緩衝區 -
SPC TAB- 切換到上次查看的緩衝區 -
SPC b n- 切換到下一個緩衝區(向前一個) -
SPC b p- 切換到上一個緩衝區(向後一個) -
SPC f s- 將當前緩衝區保存到文件 -
SPC b d- 關閉當前緩衝區
文件
Spacemacs 提供了兩種文件導航選項:內聯導航和內置文件管理器。內聯導航用於 Spacemacs 的確認對話框,與 Shell 非常相似。內置文件管理器更加用戶友好,允許檢查文件詳細信息。掌握每種方式的基礎是精通 Spacemacs 的關鍵。
也有高級選項可用,例如更強大的文件管理器和文件樹。這些內容包含在 高級 章節中。
內聯
使用 SPC f f 快捷鍵可使用內聯導航。它使用的窗口與緩衝區導航窗口非常相似。你可以在那裡篩選和選擇文件。只需輸入任何內容以縮小結果範圍,或按 Ctrl+j 或 Ctrl+k 上下移動行。按 Ctrl+l 打開文件或目錄,按 Ctrl+h 返回上一級。按 TAB 自動補全輸入。
文件管理器
如果你需要更可視化的方法,請按 SPC a d Enter 運行內置文件管理器。你可以使用 Ctrl+h j k l 鍵進行導航,並按 Enter 進入目錄和打開文件。
有一些可用的快捷鍵(更多請參考 dired 文檔):
-
q- 退出 dired -
R- 重命名文件 -
C- 複製文件 -
+- 創建新目錄
高級 章節中的 Ranger。它提供了更多功能,一旦你掌握了它,它可以成為 Dired 的最佳替代品。退出
可以通過 SPC q 退出編輯器,這將顯示多種退出方法。
一些可用的方法包括:
-
SPC qf退出當前幀 - 適用於 emacsclient 幀 -
SPC qq退出 Emacs (Kill-emacs) -
SPC qr退出 Emacs 並重啟(恢復布局) -
SPC qR退出 Emacs 並重啟 -
SPC qd退出 Emacs 並重啟(附帶 --debug-init 參數)
高級概念
在這一步,你已經能夠成功打開文件、進行修改並保存。路已走完一半,現在你可以選擇接下來要掌握什麼。以下是一些你可能感興趣的章節。
層
層是 Spacemacs 最強大的功能之一。層是一組軟體包和配置選項,能以某種方式極大地擴展編輯器功能。例如,有針對不同程式語言的層,或者提供額外工具的層(如 IRC 消息或集成網頁瀏覽器)。層的完整列表可以在 層 文檔頁面找到。
有些層已經隨 Spacemacs 一起提供,其他的可以手動添加。為此,打開 Spacemacs 配置文件(SPC f e d),找到其中的 dotspacemacs-configuration-layers 部分。然後只需將選定的層添加到列表中並重啟 Spacemacs。它會在下次啟動時下載所有必需的文件。
當你打開一個已知擴展名的文件時,Spacemacs 也會建議你安裝一個新的層。例如,如果你打開一個 .html 文件,系統會建議安裝 html 層。
你可以通過在 Spacemacs 配置文件中覆蓋某些特定於層的變量來自定義層的行為。請查看相應的層文檔以獲取詳細信息。
文件導航
還有一些額外的文件導航工具。它們可能會極大地改變你日常使用 Spacemacs 的方式。
文件樹
你可以按 SPC f t 運行文件樹。新窗口將打開,可通過 SPC 0 訪問。那裡可以使用標準的 h j k l 導航。你可以使用 R 更改根文件夾,使用 s 切換隱藏文件。使用 c 創建新文件,使用 r 重命名舊文件。詳情請查看 Neotree 文檔。
R。內聯文件導航將打開,只需根據需要按 H 返回上一級,然後選擇 . 目錄即可。文件管理器
如果你需要一個全功能的文件管理器,那麼 Ranger 可能是最佳選擇。那裡有許多有用的功能,如即時的 h j k l 導航、內聯文件預覽以及操作文件的能力。它還稍微改進了默認的 Dired 行為(SPC a d)。安裝 ranger 層並使用 SPC a r 運行它。詳情請查看 Ranger 文檔。除了自定義選項外,還有許多有用的快捷鍵。
窗口
Spacemacs 允許你將屏幕分割成獨立的窗口。每個窗口都有一個個人編號,可以通過 SPC n 快捷鍵訪問,其中 n 是選定的編號。窗口可以單獨分割,因此可以創建複雜的布局。
下面列出了一些窗口快捷鍵。使用內聯幫助(SPC w)獲取更多信息。
-
SPC w 3- 聚焦編號為 3 的窗口 -
SPC w s- 水平分割窗口 -
SPC w v- 垂直分割窗口 -
SPC w d- 刪除窗口 -
SPC w u- 撤銷上次窗口操作 -
SPC w m- 切換窗口全屏 -
SPC w .- 進入窗口瞬態狀態 (transient state)
配置
故障排除
啟動緩慢
如果啟動時間超過 10 秒,可能是 exec-path-from-shell 模塊出現了問題。在 Linux 系統上可以安全地禁用它。完成以下步驟:
- 按
SPC f e d打開 Spacemacs 配置文件 - 找到
dotspacemacs-excluded-packages部分 - 在此處添加
exec-path-from-shell模塊,最終條目應類似於dotspacemacs-excluded-packages '(exec-path-from-shell) - 使用
SPC f s保存更改並重啟 Spacemacs
次要模式圖標字體不正確
如果你看到的是 24ba 24c0 符號而不是 ⒺⓀ,或者它們太醜,
那麼你必須為此類符號安裝一個好的 Unicode 後備字體,或者通過將 dotspacemacs-mode-line-unicode-symbols 設置為 nil 來禁用它們。