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 字体(可选)
Spacemacs 使用的默认字体是 Adobe 的 Source Code Pro。如果您想使用它,建议将其安装在您的系统上。
如果找不到指定的字体,将使用备用字体。
删除 Emacs 配置文件
备份(如果需要)并删除 `~/.emacs` 文件(如果您还没有这样做)。否则 Spacemacs 将无法加载,因为该文件会阻止 Emacs 加载正确的初始化文件。您可以通过以下方式重命名它:
$ mv ~/.emacs ~/.emacs.bak
或者您可以直接删除它而不备份
$ rm ~/.emacs
首次运行 Spacemacs
现在是时候启动 Spacemacs 了。
$ emacs
首次运行时,系统会询问您应该安装哪些功能。所有选项都是可替代的,所以总会有一些选择。这些选择会影响 Spacemacs 的某些行为和快捷键。建议选择默认值,直接按 Enter。默认值已经过优化,您以后可以随时更改它们。
完成问题后,Spacemacs 将下载并安装所有必需的包。这可能需要几分钟时间。此时 Spacemacs 可能会看起来卡住,但这是正常的。
运行 Spacemacs
要启动 spacemacs,只需运行:
$ emacs
当底部栏没有显示“...”操作时,Spacemacs 就可以工作了。
守护进程模式
Spacemacs 也可以在守护进程模式下启动。守护进程模式允许一次初始化编辑器,然后稍后连接到它,而无需重新读取配置文件。当您的配置文件很大时,这可能很有用,因为初始化序列只会完成一次。之后,您可以随时立即连接。
要以守护进程模式运行 Spacemacs:
$ emacs --daemon=instance1
然后您稍后可以使用 emacsclient 连接到 instance1。
$ emacsclient -nc -s instance1
systemd 模块
您可能想创建一个 systemd 模块来运行 emacs 守护进程。请注意,出于社区 ELPA 包等原因的安全考虑,建议在此处描述的作为用户特权的 systemd 用户模块运行守护进程。
创建一个 emacs 用户 systemd 服务文件,例如:
.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;
然后执行 daemon-reload 并 启动 emacs.service 用户单元。
检查以确保没有发生错误。如果您已经在运行 emacs 作为守护进程,并且遇到错误,我建议 启用我们刚刚创建的用户 emacs 服务并重新启动。这解决了我的问题。检查您的用户 emacs.service 单元状态也可能很有用。然后,如果成功,请 启用 用户单元以保持持久性。
完成后,您可以通过您的 DE 启动器启动 emacs,并享受显著缩短的加载时间,但即使在非常强大的系统上,emacs 也不会立即打开。如果您愿意,也可以为此命令设置别名。 `instance1` 也可以重命名,但请确保在服务文件中匹配守护进程的名称。
$ emacsclient -nc -s instance1
用法
第一次使用 Spacemacs 可能会有些棘手,特别是对于完全的初学者。但是,您的努力将得到回报。只需掌握几个关键概念即可执行基本任务。
您始终可以通过输入 :q[Enter] 来退出 Spacemacs。
内置教程
在 Spacemacs 中,您可以通过按下 SPC h T 来运行 Spacemacs 内置教程。
基本概念
前提条件
为了解释基本概念,我们需要一些文本来练习。让我们先生成它。请不要在意命令现在是否不清楚,您目前不需要知道它们。
- 运行 Spacemacs
- 按
SPC b N创建一个新的空缓冲区。 - 按
9 SPC i l l插入一些文本。
您应该看到九行生成的文本作为结果。使用它们来试验下一节中描述的命令。
现在我们可以接近一个名为 状态的概念了。
编辑器状态
Spacemacs 和普通文本编辑器之间的主要区别是 状态。每种状态都会改变编辑器的运作方式。例如,有一个 插入状态,您可以在其中输入文本(就像在普通文本编辑器中一样),还有一个 普通状态,其中您所有的按键都被用作命令,而不会改变实际文本。一次只能激活一种状态。在状态之间切换是成功使用 Spacemacs 的关键技能。
当前编辑器状态显示在左下角。它以一个带“1”(默认)文本的彩色矩形的形式出现。颜色描述了当前状态。有很多状态,但只有少数几种被经常使用。
- 橙色。这是 普通状态。用于输入命令和文本导航。
- 绿色。这是 插入状态。用于文本输入。
- 灰色。这是 可视状态。用于选择文本块并控制它们。
您还可以检查当前状态的光标颜色。
普通状态
普通状态用于文本导航和运行命令。您无法在此模式下直接输入文本。相反,您可以快速导航并进行任何形式的更正。普通状态是默认状态,其颜色为 橙色。
您可以通过按下 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- 复制(yank)光标下的单词yd- 复制(yank)光标下的行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 的关键。
还有高级选项可用,例如更强大的文件管理器和文件树。它们在“高级”部分介绍。
行内(Helm)
行内导航可通过 SPC f f 热键使用。它使用的窗口与缓冲区导航窗口非常相似。您可以在那里过滤和选择文件。只需键入任何内容即可缩小结果范围,或者按 Ctrl+j 或 Ctrl+k 向下和向上移动行。按 Ctrl+l 打开文件或目录,按 Ctrl+h 向后退。按 TAB 自动完成输入。
文件管理器(Dired)
如果您需要更直观的方法,请按 SPC a d Enter 来运行内置文件管理器。您可以使用 Ctrl+h j k l 键进行导航,然后按 Enter 进入目录和打开文件。
有一些可用的热键(有关更多信息,请参阅 dired 文档):
q- 退出 diredR- 重命名文件C- 复制文件+- 创建新目录
退出
可以通过 SPC q 来退出编辑器,这将显示多种退出方法。
一些可用的选项有:
SPC qf退出当前框架 - 适用于 emacsclient 框架SPC qq退出 emacs Kill-emacsSPC qr退出 emacs 并恢复布局后重新启动SPC qR退出 emacs 并重新启动SPC qd退出 emacs 并使用 --debug-init 重新启动
高级概念
此时,您已经能够成功打开文件、进行更改并保存它们。一半的路程已经完成,现在您可以选择接下来要掌握的内容。有一些部分您可能会感兴趣。
层(Layers)
层是 Spacemacs 最强大的功能之一。层是一组包和配置选项,它们以某种方式极大地扩展了编辑器的功能。例如,有针对不同编程语言的层,或者提供附加工具(如 IRC 消息传递或集成 Web 浏览器)的层。完整的层列表可以在 Layers 文档页面找到。
一些层已经随 Spacemacs 一起提供,其他层可以手动添加。为此,请打开 Spacemacs 配置文件(SPC f e d),然后找到其中的 dotspacemacs-configuration-layers 部分。然后只需将所选层添加到列表中并重新启动 Spacemacs。它将在下次启动时下载所有必需的文件。
当您打开具有已知扩展名的文件时,Spacemacs 也会提示您安装一个新层。例如,如果您打开一个 .html 文件,系统会提供安装 html 层的选项。
您可以通过在 Spacemacs 配置文件中覆盖某些特定于层的变量来定制层的行为。请查看相应的层文档以获取详细信息。
文件导航
还有一些额外的文件导航工具。它们可能会极大地改善您日常使用 Spacemacs 的方式。
文件树(Neotree)
您可以通过按下 SPC f t 来运行文件树。会打开一个新窗口,可以通过 SPC 0 访问。其中提供了标准的 h j k l 导航。您可以使用 R 更改根文件夹,并使用 s 切换隐藏文件。使用 c 创建新文件,并使用 r 重命名旧文件。请查看 Neotree 文档了解详细信息。
R。行内文件导航会打开,只需使用 H 向后退到您需要的位置,然后选择 . 目录。文件管理器(Ranger)
如果您需要一个功能齐全的文件管理器,那么 Ranger 可能是最佳选择。它提供了许多有用的功能,例如即时 h j k l 导航、行内文件预览和文件操作能力。它还稍微改进了默认的 Dired(SPC a d)行为。安装 ranger 层并使用 SPC a r 运行它。请查看 Ranger 文档了解详细信息。除了自定义选项外,还有许多有用的热键。
Windows
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 .- 进入窗口瞬态状态
配置
故障排除
启动时间慢
如果启动时间超过 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 来禁用它们。