鉴于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 |