Spacemacs - Arch Linux 中文维基

跳至內容

# Spacemacs

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Spacemacs，最近一次同步於 2025-10-14，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

本文或本節需要翻譯。要貢獻翻譯，請訪問簡體中文翻譯團隊。

附註： 全文需要翻譯（在 Talk:Spacemacs# 中討論）

Spacemacs 是一款基於 Emacs 構建、採用 Vim 按鍵綁定方案的可擴展文本編輯器。該項目旨在融合 Vim 與 Emacs 編輯器的優勢，取其精華。Spacemacs 的發行版基於社區驅動的 Emacs 配置，不僅大幅擴展了 Emacs 的默認行為，更增添了諸多額外功能。

## 安裝

### 安裝 Emacs

Spacemacs 是基於 Emacs 構建的，因此我們需要先安裝 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. 若需使用該字體，建議在系統中安裝。

- 安裝 adobe-source-code-pro-fonts包

如果未找到指定字體，則回落到一個可用字體。

### 移除 Emacs 配置文件

（如果需要）備份並刪除 ~/.emacs 文件，否則，Spacemacs 將無法加載，因為該文件會阻止 Emacs 加載正確的初始化文件。你可以通過以下方式重命名它：

    $ mv ~/.emacs ~/.emacs.bak

你也可以不備份就刪除它：

    $ rm ~/.emacs

### 第一次運行 Spacemacs

下面首次運行Emacs:

    $ emacs

第一次你應該被要求選擇要安裝的功能。所有選項都是可替代的，所以無論如何都必須選擇某個選項。這些選擇會影響一些 Spacemacs 的行為和快捷鍵。建議選擇默認值，只需按 Enter 鍵。默認值已經相當優化，你之後可以隨時更改它們。

提示： 大多數默認插件比替代方案功能更豐富。但在部分場景下（如性能優化、特殊功能需求），其它變體插件反而會更實用。

完成配置問答後，Spacemacs 會自動下載並安裝所有依賴插件，整個過程可能需要幾分鐘。期間 Spacemacs 界面看似卡住，屬於正常情況。

### 啟動 Spacemacs

直接執行以下命令即可啟動：

    $ emacs

當底部狀態欄不再顯示 ... 類加載進度提示時，就代表 Spacemacs 已就緒可用。

注意： 若啟動耗時超過 10 秒，請參考下方故障排查章節。

### 守護進程模式

Spacemacs 支持以守護進程模式運行。守護進程模式只會初始化一次編輯器，後續可直接連接進程，無需重複讀取配置文件。適合配置文件體量很大的場景，僅需完成一次初始化，之後隨時都能快速連接使用。

以守護進程模式啟動 Spacemacs：

    $ emacs --daemon=instance1

後續可通過 emacsclient 連接 `instance1` 實例：

    $ emacsclient -nc -s instance1

提示：你可以創建多個不同名稱的守護進程實例。

### systemd 自啟配置

本文或本章節的語言、語法或風格需要改進。參考：幫助:風格

原因：Written like a blog, violates Help:Style#Language register.（在Talk:Spacemacs討論）

你可以創建 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`，可打開官方內置入門教程。

### 基礎核心概念

#### 前置準備

為講解基礎操作，我們先生成一段測試文本用於實操。暫時不用理解當下的快捷鍵，只需跟著步驟操作即可：

1. 啟動 Spacemacs 按下 `SPC b N` 新建空白緩衝區 按下 `9 SPC i l l` 自動生成測試文本

執行後會生成九行示例文本，後續所有命令練習都可以基於這段內容操作。

注意：用 SPC 組合鍵時需要依次按順序敲擊：先按空格鍵，再按 b，再按 N。大寫字母需要配合 Shift 輸入，例如 N 對應 Shift+n，完整按鍵順序為：空格 → b → Shift+n
提示：按下空格鍵後，底部會彈出幫助菜單，可查看所有可用命令。

接下來介紹 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 行

提示：數字參數是 Spacemacs 世界中廣泛使用的技巧。

這裡還有很多未被發掘的命令。得益於類似於 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` 快捷鍵。然後你可以使用普通模式的快捷鍵進行導航，唯一的區別是：文本選擇。基於初始光標位置，光標的移動會選中文本，之後你可以使用 `y`ank（複製）或 `d`elete（刪除）它們。記住，你可以使用 `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 文檔。除了自定義選項外，還有許多有用的快捷鍵。

注意：如果你打開 Ranger 有問題，請嘗試先關閉 Neotree

#### 窗口

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)

提示：瞬態狀態允許你調整窗口設置，如它們的順序和比例。只需進入該狀態，所有可用選項都會顯示出來。

這篇文章的某些內容需要擴充。

原因：補充更多日常使用的 Emacs/Spacemacs 功能。 (在 Talk:Spacemacs 中討論)

## 配置

這篇文章的某些內容需要擴充。

原因：補充 Spacemacs 配置文件的簡要說明。 (在 Talk:Spacemacs 中討論)

## 故障排除

### 啟動緩慢

如果啟動時間超過 10 秒，可能是 `exec-path-from-shell` 模塊出現了問題。在 Linux 系統上可以安全地禁用它。完成以下步驟：

1. 按 `SPC f e d` 打開 Spacemacs 配置文件
2. 找到 `dotspacemacs-excluded-packages` 部分
3. 在此處添加 `exec-path-from-shell` 模塊，最終條目應類似於 `dotspacemacs-excluded-packages '(exec-path-from-shell)`
4. 使用 `SPC f s` 保存更改並重啟 Spacemacs

### 次要模式圖標字體不正確

如果你看到的是 24ba 24c0 符號而不是 ⒺⓀ，或者它們太醜， 那麼你必須為此類符號安裝一個好的 Unicode 後備字體，或者通過將 `dotspacemacs-mode-line-unicode-symbols` 設置為 `nil` 來禁用它們。

提示：Spacemacs 的一個不錯的 Unicode 後備字體是 ttf-symbolaAUR
分類：​

- 文本編輯器
- 使用「模板:風格」標記的頁面或章節

隱藏分類：​

- 使用「模板:Translateme」標記的頁面或章節

Spacemacs
新增話題