首页 > 代码库 > Emacs ibuffer小结

Emacs ibuffer小结

在使用Emacs中,会打开很多很多的buffer,其中也包括非文件buffer,比如shell buffer,
email buffer,那么如何管理这些越来越大的buffer呢?


默认C-x C-b会执行list-buffers容你搜索使用,


技术分享


然而,Emacs也提供更加强大的替代品

ibuffer,你肯定会很喜欢这个替代品,那么先做个键绑定吧:

(global-set-key (kbd "C-x C-b") 'ibuffer)

放置在你的.emacs中,C-x C-e执行这句话即可

那么现在的C-x C-b的效果是:

技术分享


下面假设你想对C语言代码进行筛选,键入 / m 然后输入c-mode,看看效果吧,前缀"/"在
ibuffer里头是分组筛选命令。

技术分享
可以看到,只有c语言文件buffer留了下来,但是如果你想要两种major mode:c-mode 和
org-mode,那么可以使用 / g 来对buffer来分组,只要在筛选后,键入 / g 然后键入组名,
就能分组,然后可以键入 / / 回到全部列表中去,再去分下一个组,通过上述操作,建立

orgfiles和cfiles组,如下所示:

技术分享

可以通过e(edit),f(find),或者RET查看buffer,使用m对buffer进行标记,可以键入D,进行删除

技术分享

如图所示:一次性mark了15个buffer,然后键入D,就会提示是否kill掉这些buffer,如果误mark了buffer,也可以用u撤销.



下表列出了筛选命令:


| key | bindings                          |
|-----+-----------------------------------|
| / m | 基于major mode设定一个筛选条件    |
| / n | 基于buffer name设定一个筛选条件   |
| / c | 基于buffer 的内容设定一个筛选条件 |
| / f | 基于filename 设定一个筛选条件     |
| / > | 基于buffer size 设定一个筛选条件  |
| / < | 也是基于buffer size               |
| / / | 删掉所有生效的筛选条件                |


下表列出了分组筛选命令:


| key | bindings             |
|-----+----------------------|
| / g | 根据筛选结果创建分组 |
| TAB | 移动到下一个分组     |
| M-p | 移动到上一个分组     |
| / \ | 删除所有存在的分组   |


下表列出了排序命令:


| key | bindings             |
|-----+----------------------|
| ,   | 按照排序模式循环排序 |
| s i | 反向当前排序         |
| s a | 根据字母排序         |
| s f | 根据文件名排序       |
| s v | 根据最后查看日期排序 |
| s s | 根据buffer大小排序   |
| s m | 根据major mode排序       |


Emacs ibuffer小结