用counsel-ibuffer取代ivy-switch-buffer

ivy用户很多人切换buffer应该都是使用ivy-switch-buffer。但是ivy-switch-buffer在有很多相同名字的buffer被开启时会很尴尬(例如有多个README的情况下)。而counsel-ibuffer是一个使用ibuffer当作backend的命令,除了依照name排序之外也会显示major-mode以及path (而这两者也是可搜索的一部分),这样就算有相同名字的buffer被开启也可以利用path不同来区隔

这是去年二月的PR加入的command,不知道有多少朋友用过?详细情况可以参考

ivy.el (ivy-switch-buffer): Add option to display path #943

counsel.el: Add command counsel-ibuffer

一般情况下我用counsel-ibuffer取代了ivy-switch-buffer,需要将buffer分组的时候会直接使用ibuffer

2 个赞

那 counsel-ibuffer 可以显示 recent files 吗? ivy-switch-buffer 默认显示吧

我用ivy-rich,功能更强大:

3 个赞

但是会慢很多。。。更多的功能可能会导致性能更差,如果只是同名文件问题,可以考虑开启 uniquify

(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)

refer: autocomplete - Emacs: Switching Between Buffers with the Same Name but in Different Directories - Stack Overflow

1 个赞

功能越多速度肯定是越慢 ,不过在 UI 下这样信息查看更方便,个人觉得在可接受范围内。终端下速度是很快的,但肯定比默认慢些。

1 个赞

ivy-rich对我来说太overkill了。另外在counsel-ibuffer里路径,major mode等都是可被搜索的对象,但印象中ivy-rich里面这些资讯虽然有被显示出来却不能被搜索

实现原理是一样的,都能被搜索。

Major Mode不能搜索啊。

ivy-rich的实现原理好像是基于ivy得display-transformer,而counsel-ibuffer好像是直接解析ibuffer

我指的是 ivy的内部机制都是一样的,具体从哪里取数据就不一定了。ivy-rich 是可以自定义的,搜索 major mode 也能办到。个人觉得搜索 major mode 还可以理解,搜索结果中还带 size 就不大合理了。

另外, ivy-rich 中默认 major mode 是带颜色的, counsel-ibuffer 是不行的。另外,counsel-ibuffer 无法加上 icon, 样式会错乱。优缺点自行斟酌吧~~