有没有办法在 emacs 实现 vscode 那样的 tab 分组方式?

你看你这样就需要先 C-x b 然后搭配 C-n/p 上下移动。如果需要来回在两个 buffer 切换的话,就有点费劲。当然你可以说那种情况应该是 split window 才对。但是有时候就是没法预期会是个什么情况,而且 split window 之后可能又需要费劲在 window 间切换了。 其实就是大家说的都对,各自有自己习惯的方式。我之前其实也是通过 buffer list 选的,用了很久的,但是直到最近半年使用 tab 之后才发现 tab 是我想要的方式。

郁闷的点在于,我现在习惯使用 tab 之后,感觉很难再回去使用 buffer list 选择了。。

这个是你没用好, 我很早就给这个操作绑定了方便的快捷键, 非常方便. 眼睛根本不用去看tab.

一直感觉用tab的话, 切换buffer的时候眼睛去看tab非常影响连贯性.

你是说给来回两个 buffer 切换绑定了方便的快捷键是吗?如果需要三个,或者四个 buffer 之间切换是你怎么做的呢?

我觉得 tab 实际是把部分 buffer-list 里的 buffer 名称直接显示在一个额外的 modeline 上,并且每个位置可以绑定按键去切换,这个的好处是不需要按一个前缀键来触发 buffer list,缺点是多占据了一行空间,并且多消耗了几个全局的切换按键。我倒希望有一种动态的 tab,tabline 上只显示最近访问的n个buffer的名称,比如最常用或最近使用的 3 个,根据局部性原理(或者2/8原则),大部分的buffer切换都会集中在这几个tab 上,因此绑定几个短的按键是合理的也是值得的,每次切换buffer后 tabline 应该动态更新(也相当于把 buffer list 的最近访问前几个名称显示在 modeline 了),如果要去切换不在tabline的其他buffer时,才调出buffer list再模糊搜索,就好比cpu的cache之于内存,或者内存之于硬盘,都是需要一个缓冲来权衡速度和空间, cache miss 之后再去做一个更全局的搜索,不知道有没有这样的包。

1 个赞

C-x b 之后一般就模糊搜索名称了,很少情况会 C-n/p

对于两个 buffer 之间的切换,我这里 esc 是切换到上一个 buffer,很方便,insert 的时候是回到 normal

re

很久之前用过分组的tab,后来发现还是切换buffer最方便。不知道现在tab有什么更先进的组织方式了没有。

我说过,这样直接绑定快捷键就ok了啊,也不需要弹出框。

预览性能问题很大 :rofl: 我直接关掉了


现在用内置的tab-bar-modeswitch-to-buffer,前者拿来管理常用buffer,后者拿来模糊搜索

只预览已经打开的buffer,没有性能问题,很快的。Consult 官网有介绍这个部分,加入下面的配置就行。需要预览这些还没加载的buffer,按一个按键(M-P)就可以了。

(consult-customize
 consult-ripgrep consult-git-grep consult-grep
 consult-bookmark consult-recent-file consult-xref
 consult--source-file consult--source-project-file consult--source-bookmark
 :preview-key (kbd "M-P"))
1 个赞

正常切换buffer, 跟其他人差不多, 他们用ivy, 我是用原始的ido. tab和这种方式都体验过, 后者比tab体验好很多, tab有一种割裂感, 用着比较累.

这个也是OK的,tab-bar 就类似于 group 。

对,割裂感,形容得很贴切。还多占一行空间 :joy:

那是因为你没有用 awesome-tray, 哈哈哈哈。

老铁,我用过啊,只是现在不用,依然有割裂感 :joy:

大家把自己习惯说清楚,给别人有参考就行了,这个问题无解,萝卜白菜吧。

我现在用vscode,也不会去点切换tab,Emacs养成的习惯,直接按Ctrl+p跳转文件。

awesome-tray 和 mini-modeline 我后来都弃用了,自己写了个简单的 modeline。

其实我很喜欢它们,只是我发现要用 timer 往其他 buffer(包括原生的 modeline)里面写入的做法都会触发一个 bug:

所以我在用两个窗口看同一个文件,一个看一个写的时候,经常突然就不知道滚到哪了,很烦。

很多 modeline 包也会用 timer,所以只能自己撸一个了 :rofl: 很奇怪为什么别人都没有反映过类似的问题。但是用我自己写的 modeline,问题似乎也只是有改善,没有消失。。。可能 Emacs 28 会好吧,真是太心累了 :rofl:

估计是你配置冲突导致的bug

不是的,在 $ emacs -Q 里可以模拟出来,我已经给 Emacs 报过 bug 并得到确认。