Emacs 不流行但很拉风的 feature
align-regexp
相必大家都用过
C-M-\
,一般都能满足需要,可是有时候需要按一行中的某些字符对齐,比如一些变态的语言或者编程规范规定赋值语句需要按
"=" 对齐,那怎么办?
align-regexp 使用起来只需要选中需要对齐的 region,然后执行,输入需要匹配的正则表达式即可。
比如如下代码:
1 | int var = 2; |
需要按 = 对齐,选中执行 M-x align-regexp
, 然后 regexp 填
=,结果如下:
1 | int var = 2; |
occur
输出 buffer 中符合正则表达式的所有行,在查找替换时,或者需要重构代码时,事先用 occur 来验证下构造的正则表达式的效果,可以避免一时自信或者冲动毁了先前的工作.
anything
用过 Mac 的 quicksilver,或者 Linux 上的 gnome go 的同学,也许会觉得简直是神器,自称操作系统 Emacs 岂能自甘落后,anything 绝对值得拥有。
M-x anything
, 会出现 anything
buffer,其中显示当前目录下所有文件,当前打开的所有 buffer
以及最近打开的文件,只需要挑着敲文件名包含的少数字母,文件会被选中,然后直接
tab,buffer
会显示所有操作,输入操作名称,当然是少数字母,执行即可,也可以使用
C-n C-p
来选择。
我使用的是 anything-config,anything-startup 会让 C-x f
变得很乱很难用,不如 ido-mode 好用。
tramp
远程文件编辑的利器,C-x f [email protected]:filepath
,
流畅俨如本地文件,该工具其实很流行,但还有一个功能很少被人使用,但却可以解决烦恼。
有多少次你编辑了文件,悲催的发现是只读文件,不能保存,你又不想退出
emacs,只能 sudo vim
,然后用非常别扭的方式编辑文件。但有了
tramp,只需要 C-x f /sudo::/etc/passw
,烦恼木有了。
刚在 Emacs 中输入上面那个远程文件的链接时,竟然也触发启动了 tramp 连接,然后网络连不上于是 Emacs 僵死了,只得 force quit 了下,看来不死之身有时候也会出问题的。
re-builder
实时高亮显示当前 buffer 可以匹配所输入正则表达式的字串,非常适合查找替换前做检查。功能跟 occur 差不多,只是 occur 另开一个 buffer 用来显示匹配的行,re-builder 直接显示在当前 buffer。
ractangle
如下矩阵:
1 | 1234 |
假如我们需要剪切左上 2x2 矩阵,从1排1列,C-space
选中,挪动光标到2排2列,C-x r k
, 然后 C-x r y
复制,结果如下:
1 | // After cut |
C-x r o
插入空格到选中矩阵,C-x r c
用空格替换所选中矩阵,C-x r d
删除所选矩阵,如下三操作区别
(左上2x2矩阵):
1 | // C-x r o |
C-x r t
用输入字符串替换所选矩阵每行, 下图结果用 xy
替换左上 2x2 矩阵。
1 | xy34 |
auto-rever-tail-mode
我们多少次在 terminal 中 tail -f sys.log 来关注 log 的最新输出, 使用这个命令 Emacs 便自动完成该工作。
wdired-change-to-wdired-mode
在 dired-mode 使用该 mode,就可以像文件那样对 dired-mode buffer 进行编辑,可以用 regex-replace,rectangle 命令,批量更改文件名等。
hexl-mode
查看编辑非文本文件利器。
multi-occur-in-matching-buffers
可以对所有打开的 buffer 进行 regex search。
C-u C-spacebar
Emacs 记录了所有光标移动的历史,使用这个命令,可以依次回到前一个位置,在阅读代码时非常有用。
apropos
搜索包含某关键字或者匹配某正则表达式的 Emacs 命令,利用这个可以发现更多给力的 feature。
follow-mode
现在流行的是宽屏,宽度不是问题,因此 Emacs C-x 3
用的很多,但很多长的文档,要翻好多页,小拇指真疼。
竖分屏后执行 follow-mode 后,所有 buffer 显示同一文件的不同部分,可视范围翻倍,甚至数倍,这要看你的屏幕有多宽了。
最后
题目中说的非流行是依据我在发现这些 feature 的偶然程度来定的,也许里面有的可能地球人都知道或者都再用,比如我觉得的,应该大家都会用的,或者一开始就被人推荐使用的,我就没列在上面,它们是:
org-mode (org2blog), cscope, ido-mode, auto-complete, cedet, magit, yasnippet, ecb …
这里有个调查,Emacs 中最有用的 feature,大家可以参与下,另外本文中的很多 command 是我看到这个 polls 之后才觉得很强大。
最后,不能忘了很强大很强大的三个命令,分别用来查询某 key binding,某 function (command),某variable 是干啥用的:
c-h k
, c-h f
, c-h v