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
添加话题