1 Doom-Emacs用前须知
Doom-Emacs(下面称为Doom)是Emacs的一个比较复杂的配置包,主要目的是使Emacs拥有Vim的出色编辑能力,同时让新手配置起来相对容易些。 但后一个目标几乎是不可能的事情,因为你既要会用Emacs,还要会用Vim,而它们是全宇宙学习难度最高的两个编辑器。
如果这两个编辑器你都没有用过,建议:
- 分别安装纯纯的Vim和Emacs
- 按出厂配置(不更改配置不安装插件),学习使用一段时间
就算Doom把Emacs彻底打扮成别人家孩子的样子,Doom也还是Emacs的一个配置包。所以使用Doom的时候还是要求了解Emacs自家的东西多些,对Vim的要求并不高。 Vim相关的内容掌握下面的就可以顺利使用Doom(其实也不少):
- Vim的模式概念:普通模式、插入模式、视图模式等
- 模式的切换方法
- 不同模式下的操作
2 安装和基本配置
2.1 安装
- Doom要求Emacs版本26.3以上。本人操作系统使用的是Debian稳定版(buster),安装源中提供的版本较低,要从Emacs站点下载源代码编译。看说明编译安装即可,没有什么困难,不赘述。其他依赖的软件如git、ripgrep、find和fd都可以使用Debian官方源安装。
- 参考项目主页的说明安装Doom就没有问题
注意:Doom使用Emacs的配置目录“~/.emacs.d”,请把原配置文件移走备份好!
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install
安装要下载很多软件包,耐心等待完成。
2.2 基本配置
- Doom的个人配置文件在“~/.doom.d”目录下,原个人配置目录“~/.emacs.d”已被当成Doom的“系统”目录
- .doom.d目录下初始有三个配置文件
- init.el
- packages.el
- config.el
初次使用可完全不改配置,也可修改init.el文件,注释掉一部分不使用的配置。修改前两个文件都要运行下面命令,做一些“同步”设置:
~/.emacs.d/bin/doom sync
修改“~/.profile”文件,把“~/emacs.d/bin”路径添加到程序路径,方便直接使用doom命令。
NOTE:Doom配置文件的封装有点过份,可修改性太差,老Emacser要是感觉不方便,可考虑 bling/dotemacs (github)作为替代方案。
3 使用方法
3.1 理解Emacs的按键表示方法
- C-x 表示同时按下Ctrl和x
- M-x 表示同时按下Meta(Alt或者Esc键)和x键
- SPC表示空格键
- S 有时表示SHIFT键(放在连字号前时)
- RET或者<return>表示回车键
- TAB或者<tab>表示制表符键
- 如果不是和控制键联合使用,表示顺序按键
- C-c ab:表示先同时按下Ctrl和c键,再顺序按下a和b
- C-c C-c a:表示同时按下Ctrl和c键两次,再按a
- SPC f s:表示顺序按下SPC、f和s键
3.2 状态(state)切换
Vim的“模式”在Doom中称为“状态”(因为“模式”在Emacs中已有其他意义),是Evil包引入和实现。
- 默认是普通状态(normal state),可进行vim普通模式下的操作
- 按Esc键可从其他状态返回普通状态
- 从普通状态切换到其他状态的按键
- i:插入状态
- v:视图状态
- V:行视图状态(整行选取)
- C-v:块视图状态(矩形框选取)
- C-z:正常Emacs状态切换,可在所有模式中使用该按键。“Emacs状态”是没有打扮过的Emacs,该状态下可以使用原生Emacs的编辑方式。
除Emacs状态外,其他状态下的操作参考Vim的使用方法。
3.3 空格键(SPC)使用
- SPC在Doom的普通状态和视图状态下有特殊用途,它相当于Emacs的Ctrl或Meta命令前缀,用于执行命令
- 如果按下SPC键后不操作,窗口下方会出现命令提示菜单。
4 常用SPC命令
4.1 SPC f:文件操作
- f:打开/查找文件
- d:打开目录(Dired)
- s:保存文件
- r:最近文件列表
- y:拷贝当前文件名(路径)
- C:大写,拷贝当前文件(询问目标位置)
- D:大写,删除当前文件
- R:大写,重命名/移动文件
- S:另存
4.2 SPC b:缓冲区操作
- b:缓冲区列表
- n/[:切换到前一个缓冲区
- p/]:切换到后一个缓冲区
- s:保存当前缓冲区(使用命令和 SPC f s 可能不同)
- S:保存所有缓冲区
- d/k:关闭当前缓冲区
- O:关闭其他缓冲区
- K:关闭所有缓冲区
- z:隐藏/最小化当前缓冲区
- Z:关闭所有隐藏的缓冲区
4.3 SPC w:窗口操作
此菜单命令非常多,常用的有:
- v:垂直分割窗口
- s:水平分割窗口
- h/j/k/l:在窗口间移动光标(激活编辑窗口)
- w/W:向前/后窗口移动光标(比hjkl顺手)
- H/J/K/L:窗口位置置换/移动命令
- T:撕开窗口(把当前撕出来,试试就知道什么效果了)
- q:关闭当前窗口
- n:和s作用相同
- m:最大化当前窗口(全部、水平或垂直最大化,有提示)
- =:等分所有窗口(其他调整大小的命令不大实用,不如自己绑定按键)
4.4 SPC o:打开其他程序/界面
- p:打开/关闭treemacs目录树
- T:打开终端
- f:打开一个新窗口(显示当前缓冲区内容,等于在多窗口中同时编辑一个文件,内容同步!)
- a:org agenda (SPC a A 等于 SPC o a a)
4.5 SPC t:切换(toggle)
- l:行号
- b:字体模式
- F:全屏模式等
4.6 其他
- SPC q q:退出程序
- SPC h:帮助菜单,还有主题切换(SPC h t,不知道为啥放到这里)
- SPC p:项目操作。本人不习惯此类操作,不介绍。