1. Spacemacs 配置
Spacemacs 集合了 emacs 社区的努力, 为 emacs 提供一个成熟稳定, 开箱即用的 emacs 配置做了相当好的工 作. 个人使用 Spacemacs 也有相当一段时间, 以下是一些配置 Spacemacs 的 tips.
1.1. 使用中国镜像
在 dotspacemacs/user-init
中添加 melpa 中国镜像
;; melpa china mirrors |
1.2. 配置代理
连接国外的软件源由于网络问题, 通常较慢. 可以在 dotspacemacs/user-init
中设置代理
;; proxy |
1.3. 使用 spacelpa
spacemacs develop 分支特性
- emacs version: 26.1
- spacemacs develop version: 0.300
emacs26 下载 spacelpa 会遇到问题 , 提前手动下载好 spacelpa 文件跳过自动下载及解压的步骤 (refer ).
mkdir ~/.emacs.d/.cache/stable-elpa/26.1 cd ~/.emacs.d/.cache/stable-elpa/26.1 wget https://github.com/syl20bnr/spacelpa/archive/v0.300.tar.gz -O spacelpa-0.300.tar.gz tar -xzvf spacelpa-0.300.tar.gz echo -n "0.300" > version |
.spacemaces
设置
dotspacemacs-use-spacelpa t |
SPC f e R
或者重启 emacs
2. Spacemacs 美化
2.1. 字体
font family name | |
---|---|
Iosevka (Source Code Pro Style) | "Iosevka SS09" |
Sarasa Gothic (更纱黑体) | "等距更纱黑体 SC" |
花園明朝 | "HanaMinB" |
- 安装所有字体 iosevka-ss09-2.1.0.zip
- 安装所有 sarasa-gothic-sc-*.ttf 字体
配置字体
dotspacemacs-default-font '("Iosevka SS09" |
2.2. 字体: 使用 cnfonts 配置中英文对齐
使用 org-table 时中英文混排时字体需要对齐, 使用 cnfonts 项目解决这一问题.
2.2.1. 安装
dotspacemacs-additional-packages
中添加cnfonts
2.2.2. 配置
dotspacemacs/user-config
中添加
;; Chinese and English fonts alignment |
上面的 (setq cnfonts-use-face-font-rescale t)
用于设置不同标题中文字体大小不同 ,
比如 emacs 自带的 lenven 主题就支持这一特性.
2.2.3. 设置中英文对齐
M-x cnfonts-edit-profile
执行之后先不要进行任何操作, SPC f f
打开 ~/.emacs.d/cnfonts/v4/profile1.el
编辑文件, 在 cnfonts--custom-set-fontnames
的三行中的第一位分别加入已经安
装的字体.
示例
(setq cnfonts--custom-set-fontnames |
再次执行 M-x cnfonts-edit-profile
, 按照教程设置中英文对齐.
重启 emacs 后如果发现字体大小在载入 cnfonts 之后有改变, 应该是 profile 载入
设置的问题. 检查 ~/.emacs.d/cnfonts/cnfonts.conf
(nil)(("profile1" . 2)) |
设置好最后的数字, index 从 1 开始. 使默认字体大小与 cnfonts--custom-set-fontsizes
中选择的配置相同.
如果 dotspacemacs-default-font :size
为 14, 在这里的应该设置为 1
.
2.3. TODO 主题: doom-themes
2.4. TODO solaire-mode:
2.5. mode line 显示时间
在 MacOS 全屏显示下可以方便地查看当前时间
(display-time-mode t) |
3. Spacemacs 使用技巧
3.1. 导航: 使用 avy
不要再使用重复按 C-n
C-p
在当前文件在移动光标到目标位置了. 使用
evil-avy-goto-char. 首先眼睛看准目标位置, 然后按下 SPC j j
. 跟着提示的字符
按下按键直接跳转到目标位置.
命令 | spacemacs 按键绑定 | 功能 |
---|---|---|
avy-goto-char | SPC j j | 跳转到字符 |
avy-goto-word | SPC j w | 跳转到单词 |
avy-goto-line | SPC j l | 跳转到行 |
avy-goto-char 示例
3.2. 搜索: 使用 helm-swoop
不再重复地按 C-s
在当前文件中进行搜索, C-s
只适合简单的搜索场景. 使用 helm-swoop 进行预览式搜索.
Key binding | Description |
---|---|
SPC s s | execute helm-swoop |
SPC s S | execute helm-multi-swoop |
SPC s C-s | execute helm-multi-swoop-all |
示例
3.3. 搜索: 使用外部工具搜索文件
spacemacs develop 分支特性: rg (ripgrep) 支持
仅仅搜索当前 buffer 内容是不够的, spacemacs 可以使用
等工具进行文件搜索. 如果以上的工具都找不到, spacemacs 就会调用 grep
.
dotspacemacs-search-tools, the default order is rg, ag, pt, ack then grep
spacemacs 会按照系统路径中找到以上工具的顺序, 使用统一的界面进行调用.
推荐 Linux/MacOS 使用 ripgrep
(super bleeding fast!), windows 用户使用 pt
.
更多使用请查看 searching
按键绑定 | 功能 |
---|---|
SPC / or SPC s p |
search project |
SPC / or SPC s d |
search current directory |
SPC s f |
search in arbitrary directory |
4. org-mode 使用技巧
4.1. org-mode 配置重要提示
spacemacs 使用 org
ELPA 仓库中的版本, 而不是 emacs 自带的 org.
所有与 org-mode 相关的配置都需要放在 with-eval-after-load 代码块中 , 否则会载 入 emacs 自带的 org 版本, 造成版本冲突从而引起各种奇怪的 org-mode 相关的报错.
(with-eval-after-load 'org |
4.2. 中英文之间自动插入空格
在 dotspacemacs-additional-packages
中加入 pangu-spacing, SPC f e R
自动下载安装.
dotspacemacs/user-config
中加入配置
(use-package pangu-spacing |
4.3. 运行 shell 命令, 不需要离开 emacs
有时在写文档时需要查看某些 shell 命令的运行结果, 运行简单的单个命令并不需要离开 emacs, 可以在写文档时带来更好的体验.
比如在写 markdown 文档时, 使用 vmd 预览效果, 只需要 M-! vmd README.md
即可.
M-x shell-command
可以运行 shell 命令并在 minibuffer 中显示命令输出.
M-x shell-command-on-region
可以将当前选中内容作为输入运行外部 shell 命令, 在
minibuffer 中显示命令输出. 运行前加上 C-u
可以选择将命令输出替换当前选中内容.
按键绑定 | 命令 |
---|---|
M-! |
shell-command |
M-| | shell-command-on-region |
C-u M-| | shell-command-on-region, replace region with output |
4.4. 关闭图片显示
在 org 文档插入图片后 emacs 会默认渲染图片. 在确认插入图片成功后, 编辑文本时图片会占用 大量空间. 我们通常在编辑时会想关闭图片显示.
M-x org-toggle-inline-images |
C-c C-x C-v |
4.5. 转义
在需要转义字符时, 记住被包围在 *
/
_
=
+
之间的内容特殊字符大部分都
不会被解析.
4.5.1. #+BEGIN_SRC 转义
#+BEGIN_SRC
org 文档会特殊解析, 有时候代码例子中需要原样输出时, 使用 ,#
进行转义.
#+begin_src ,#+begin_src ,#+end_src #+end_src
4.5.2. org-table 中转义 |
字符
需要在 or-table 中输出 |
字符时使用
\vert{}
进行转义.