鉴于2015年icpc北京站没有cb等ide,来学习emacs。由于本人之前比较习惯使用vim,因此这里将部分地和vim进行对比。不过后来发现有尿壶geany(虽然我觉得很难用,关键是RE直接退出),和eclipse cdt(虽然eclipse我很讨厌但总比没有强吧),所以我决定不学了(VS大法好)。
基本操作
在bash on windows下运行sudo apt-get emacs。安装完毕后运行emacs filename可以打开/创建一个新文件。使用Ctrl+X Ctrl+C可以退出emacs,类似vim的:q。
命令说明
和vim不同,emacs比较依赖Ctrl,Meta键。Ctrl键是比较寻常的,Meta键有三种作用方式:
- Alt + X
- Esc X (先按Esc松开后按X)
- Ctrl+[ X
注意vim命令常可带数字前缀,例如3fa可以表示当前行第三个a,4yy表示复制四行。
光标跳转
| 操作 | emacs(不使用光标控制键) | vim(默认Normal模式) | 光标控制键 | 备注 |
|---|---|---|---|---|
| 光标左移 | Ctrl+B | H | ← | |
| 光标右移 | Ctrl+F | L | → | |
| 光标上移 | Ctrl+P | K | ↑ | |
| 光标下移 | Ctrl+N | J | ↓ | |
| 上一词首 | Alt+B | b | / | vim不会忽略标点符号 |
| 上一词尾 | ge | / | ||
| 下一词首 | w | / | ||
| 下一词尾 | Alt+F | e | / | emacs实际移到插入位置,类似vim按a进入插入模式 |
| 光标到顶行 | H | |||
| 光标到中行 | M | |||
| 光标到底行 | L | |||
| 上半页 | Ctrl+D | |||
| 下半页 | Ctrl+U | |||
| 上一页 | Alt+V | Ctrl+B | Page Up | |
| 下一页 | Ctrl+V | Ctrl+F | Page Down | |
| 逐行下滚 | Ctrl+E | |||
| 逐行上滚 | Ctrl+Y | |||
| 行首 | Ctrl+A | 0 | Home | |
| 行首(忽略前导空白) | ^ | |||
| 行末 | Ctrl+E | $ | End | |
| 行末(忽略尾部空白) | g_ | |||
| 句首 | Alt+A | ( | 句子以空行和句号分隔 | |
| 句末 | Alt+E | ) | ||
| 段首 | Ctrl+{ | { | 段以空行分隔 | |
| 段末 | Ctrl+} | } | ||
| 首行 | 1G, gg | |||
| 末行 | G | |||
| 置顶当前行 | zt | |||
| 置底当前行 | zb | |||
| 到本行下一个char字符处 | f+char | |||
| 到本行下一个char字符前 | t+char | |||
| 到本行前一个char字符处 | F+char | |||
| 到本行前一个char字符前 | T+char | |||
| 括号匹配 | % |
插改增删复制黏贴
删除
删除指令可以主要以d开头,可以在d后面指定重复次数,也可以在d前面指定重复次数。
| 操作 | emacs | vim | vim(插入模式)或gedit | 备注 |
|---|---|---|---|---|
| 删除当前字符 | x, d+→ | del | ||
| 删除前一个字符 | X, d+← | backspace | ||
| 删除当前单词 | dw | |||
| 删到行首 | do | |||
| 删到行尾 | d$ | |||
| 删到一行 | dd |
复制和粘贴
| 操作 | emacs | vim | vim(插入模式)或gedit | 备注 |
|---|---|---|---|---|
| 与下行合并 | J |