Emacs
Emacs和Vim的主要不同在于, Vim是符合UNIX哲学的工具(只做一件事, 并把这件事做好),
Emacs是不符合UNIX哲学的工具(可以做任何事, 因为它本质上是一个Elisp的解释器).
Emacs是不符合UNIX哲学的工具(可以做任何事, 因为它本质上是一个Elisp的解释器).
- Vim的快捷键很多, 但Vim的模式和快捷键是固化的,
这使得这些按键在支持Vim键位的软件里通用, 而且Vim的快捷键确实很好用,
连Emacs用户也喜欢用evil-mode(用来在Emacs里使用Vim键位的插件). - Emacs的快捷键本质上是命令的绑定, Emacs的命令非常多, 这导致Emacs的快捷键比Vim还要多得多.
Emacs的键位因此变得非常难以记忆, 加上在不同的模式里快捷键可能会大变样,
导致掌握Emacs的快捷键极为困难, 很多时候还不如直接输入命令.
使用Vim能感受到显著地编辑效率提升, Emacs则不然, 但Emacs具有比Vim强得多的hack功能(elisp),
用户编写自己的功能比Vim要容易许多.
用户编写自己的功能比Vim要容易许多.
CONTROL 缩写为 C, 在键盘上是Ctrl或Command键META 缩写为 M, 在键盘上是Alt键SHIFT 缩写为 S, 在键盘上是Shift键RET 或 RETURN 在键盘上是Enter键DEL 在键盘上是BackSpace键SPC 在键盘上是Space键ESC 在键盘上是Esc键q 关闭欢迎画面, 进入scratch(草稿, 一个空白缓冲区)C-x C-c 退出EmacsC-g 取消命令(用于取消当前已经输入的命令, 相当于Vim的 <Esc>)C-u {number} {action} 次数重复命令, 可用于各种键. 若直接输入字符, 则输入该字符number次.C-z 暂离Emacs(回到终端, 用fg命令回来)ESC ESC ESC 离开命令(可以关闭缓冲, 窗格, 与 C-g 有一些区别)使用被禁用命令时(避免新手按错), 会弹出确认, 按n键拒绝执行命令.
C-v 向下翻屏 相当于 PageDownM-v 向上翻屏 相当于 PageUpC-l 将光标行置于屏幕中央C-l C-l 将光标行置于屏幕顶部C-l C-l C-l 将光标行置于屏幕底部CONTROL 组合键常用于语言无关单位(字符, 行)META 组合键常用于语言有关单位(单词, 句子, 段落)C-p 向上移动光标 previousC-n 向下移动光标 nextC-b 向左移动光标 backwardC-f 向右移动光标 forwardM-f 向后跳跃一个单词M-b 向前跳跃一个单词C-a 移动光标至行首 aheadC-e 移动光标至行尾 endM-a 移动光标至句首M-e 移动光标至句尾M-< (< 左尖括号, 需要同时按住Shift) 移动光标至文件首M-> (> 右尖括号, 需要同时按住Shift) 移动光标至文件尾C-d 删除光标后的一个字符, 相当于Delete键C-h 删除光标前的一个字符, 相当于Backspace键M-<DEL> 删除光标前一个单词M-d 删除光标后一个单词C-k 杀死(剪切)至行尾 killM-k 杀死(剪切)至句尾 killC-<SPC> {移动光标选择文本} C-w 选择并杀死文本C-y 粘贴(先前杀死的)文本 yankingM-y 将刚刚用 C-y 粘贴的文本切换成更早的文本(重复按 M-y 可找回更早的文本) yankingC-/ 或 C-_ 或 C-x u 撤销C-x 1 关闭当前窗格以外的窗格, 也适用于各种命令打开的列表(它们就是以窗格形式显示的).C-x 2 将屏幕分为上下两个窗格C-x 3 将屏幕分为左右两个窗格C-x 4 C-f <输入文件名> 打开一个新窗格并打开新文件C-M-v 向下滚动另一个窗格C-M-S-v 向上滚动另一个窗格C-x o 将光标移动到其他的窗格(以遍历的形式) other多窗口主要用于图形界面, 文本终端只能显示一个窗口.
M-x make-frame <Return> 打开一个新的窗口M-x delete-frame <Return> 关闭当前窗口C-x C-f <输入文件名> 打开一个文件(和Vim一样, 以缓冲区形式打开, 所以也可以打开不存在的文件) find/fileC-x C-s 保存文件 saveM-x customize-variable <Return> make-backup-files <Return> 关闭文件备份特性(在保存时创建以~结尾的备份文件)C-x C-b 列出缓冲区(已打开文件列表)C-x b <缓冲区名称(大部分情况下与文件名相同)> <Return> 回到某个缓冲区C-x s 保存多个缓冲区(该命令会逐个询问已被修改但尚未保存的缓冲区是否要保存)缓冲区通常是文件, 但也存在Emacs内部定义的虚拟缓冲区(名称两侧有
可以用
* 符号),可以用
C-x b 打开, 以下是虚拟缓冲区:- Buffer List 缓冲区列表
- Messages Emacs底部出现的消息
间接缓冲区在分屏显示同一篇org-mode文档时很有用, 因为在间接缓冲区里, org-mode的折叠是独立的.
M-x clone-indirect-buffer 创建间接缓冲区由于Emacs命令数量太多, 键盘绑定不下, 所以很多命令需要靠扩展命令完成.
C-x 字符扩展命令(输入 C-x 后跟一个字符或组合键, 跟Vim的Leader键是一个作用, 只是Emacs的命令更多)M-x 运行命令(输入 M-x 之后输入一个命令名再按 <Return>),以命令名形式扩展的命令都是不常用的命令(类似于Vim的ex命令),
本质上是函数(命令名就是函数名), 字符扩展命令不过是对函数名的键盘绑定.
M-x replace-string 字符串替换(不需要输入完整的命令名, 输入 repl s<TAB> 就可以完成命令补全),接下来Emacs会询问用户具体的参数(类似于Powershell).
M-x recover file 恢复自动保存文件(Emacs会创建自动保存文件, 类似于Vim的swp文件)主模式 major mode
辅模式 minor mode
辅模式 minor mode
不同辅模式下相同的命令会有一些细节变化, 辅模式可以同时开启多个.
启动模式的命令也可以用来关闭模式.
启动模式的命令也可以用来关闭模式.
M-x fundamental-mode Fundamental模式(Emacs的主模式)M-x text-mode 自然文本辅模式(和主模式的区别在于M-f和M-b把单引号也视作单词的一部分)M-x auto-fill-mode 自动折行辅模式(超出边界的内容会被换行, 这个边界不是窗口的边界, 而是Emacs定义的每行最大字符数, 可以用
C-x f 设置)M-q 手动折行当前段落(参照 C-x f 设置的边界)C-s 向前搜索C-r 向后搜索C-h ? 查看所有帮助C-h v <变量名> 查看变量文档C-h f <函数名> 查看函数(命令)的文档C-h k <组合键> 查看快捷键的文档C-h c <组合键> 查看快捷键的简短说明C-h a <关键词> 相关命令搜索, 查找所有包含次关键词的命令SPC 先导键(和 Vim 的 <Leader> 等价), 默认为空格键按下
SPC 后, 会出现进一步按键的菜单, 每个按键后都跟随着说明文本, 用户不会一头雾水.Spacemacs 的按键基本上采用英语作为助记符.
虽然 Spacemacs 使用 Vim 的按键进行文本编辑,
但列表窗口仍然需要使用 Emacs 的按键进行上下移动(
因为列表窗口还可以输入字符进行模式匹配(搜索).
但列表窗口仍然需要使用 Emacs 的按键进行上下移动(
C-n 向下, C-p 向上),因为列表窗口还可以输入字符进行模式匹配(搜索).
遇到新的文件格式时, Spacemacs 会自动提示下载相关的 layer.
SPC ? 查看按键绑定https://github.com/syl20bnr/spacemacs/issues/4453
由于这个问题的存在, Spacemacs要么处于可以使用的状态, 要么是一坨纯粹的狗屎.
由于这个问题的存在, Spacemacs要么处于可以使用的状态, 要么是一坨纯粹的狗屎.
Spacemacs的稳定版本自2018年以来再也没有升级过主版本号, 一直停留在 200 版本.
官方仓库的主要分支现在已经切换到版本号升至300的develop分支, 似乎是想直接用开发版替代稳定版.
虽然 develop 在基本功能的使用上没有问题, 但有关新特性的文档处于语焉不详的状态.
官方仓库的主要分支现在已经切换到版本号升至300的develop分支, 似乎是想直接用开发版替代稳定版.
虽然 develop 在基本功能的使用上没有问题, 但有关新特性的文档处于语焉不详的状态.
SPC w 窗口菜单SPC w . 管理窗口状态(Window transient-state),处于该状态时, 可以使用单个按键调整窗口的大小, 位置等(下方会出现相关按键的提示信息).
实际上用鼠标就可以改变窗口大小.
SPC w / 左右分屏SPC w - 上下分屏也可以用 Vim 的
C-w v 和 C-w s 分屏C-w o 使当前窗口成为唯一窗口C-w c 关闭当前窗口SPC 1 切换光标到窗口 1(窗口的序号显示在窗口左下角)SPC 2 切换光标到窗口 2也可以用 Vim 的
C-w h/j/k/l 移动光标, 不需要在乎序号C-w H/J/K/L 移动窗口SPC w d 关闭当前窗口(关闭窗口并不会关闭缓冲区)SPC b 缓冲区菜单SPC b n 下一个缓冲区SPC b p 上一个缓冲区SPC b b 打开缓冲区列表SPC b d 关闭当前缓冲区SPC f f 通过交互式的资源管理器打开文件SPC f r 最近打开的文件列表SPC f s 保存文件(用 Vim 的 :w 替代就够了)SPC f t 开关 NeoTreeSpacemacs 使用 layer 作为配置单元, 多个 layer 可以堆叠在一起(即同时开启多个功能).
SPC f e d 打开 ~/.spacemacs 文件Doom Emacs相比Spacemacs更轻量, 也更接近原始Emacs.
- 官方引入了一些自以为是的怪癖, 例如将Evil的
s键设置为其他功能, 并推荐用cl替代原本的s. - 社区小于Spacemacs, 因此虽然更轻量和更接近于原始Emacs, 但对于不熟悉Emacs的人来说也更难配置.
- Org Mode的行为与Spacemacs不符, 在中文文本的换行,
S-RET键的绑定上都有奇怪的问题.