用vim的时候经常会用tab, 不知道大家会用吗?还是只是buffer就够用了?
几乎没用过,因为 Emacs 的 Tab 插件做的不怎么样。
如果想要用 Tab 又在用开源桌面环境可以选一个有 Tab 功能的窗口管理器。
你说的是 tab bar 吗?曾经用过 tabbar.el,用了一天后卸载,原因是emacs 中 buffer 是更自然的方式,tabbar 不对隐藏 buffer 做区分简直是噩梦,在别的编辑器可能是 Buff,在 emacs 中简直是 bullshit。
是啊,其实我用vim的时候感觉buffer和tab有点冲突,两个的功能都类似。但是buffer如果能像tabbar那样显示就好了
Emacs 目前还没有比较完善的 tab 功能,这里有做一些比较/分析:
你适应了 emacs 的话,你会发现 tabbar 并没有效率优势。
几个关键词作为切入点: persp, projectile, layout management,当然你如果用 spacemacs,一切都为你配置好了,开箱即用。
另外,关于 layout 管理,本论坛有大量这方面的帖子可供参考。
elscreen 这个插件应该比较符合需求。
试用了一下 elscreen,跟 evil-tabs 差不多。其对于 buffer 和 tab 的定位还是有点模糊,我个人比较习惯的是,tab 跟 buffer 的关系是 1vs1 强关联(就像 tabbar),例如在两个 tab 打开不同的文件,并且当前停留在 file1(tab1):
+--------------------------------+
| file1 | file2 | |
| \------------------------|
| |
| |
| |
| |
+--------------------------------+
执行 switch-to-buffer
之后,希望切换至 file2(tab2):
+--------------------------------+
| file1 | file2 | |
|-------/ \----------------|
| |
| |
| |
| |
+--------------------------------+
实际情况是,并没有跳至 file2(tab2),而是原地把 tab1 指向了 file2:
+--------------------------------+
| file2 | file2 | |
| \------------------------|
| |
| |
| |
| |
+--------------------------------+
如果不能“钉”住 buffer,tab 的意义也不大了。
我都是直接看buffer-list,因为在spacemacs里面可以helm自动补全,感觉tab完全无用.
每个buffer一个tab, 感觉纯为了鼠标设计的.
最好像terminal一样, 每个tab里可以开很多的split的buffer, 也就是每个tab里面有很多个buffer格子
这样还算符合点需求
很久前使用vim的时候,tabbar大概两三个月才会用到一次,大多数时候都是下意识的呼出buffer或者多分割几个窗口,所以在用emacs也根本没有捯饬tab的心思。 综上,个人觉得tabbar是一个很鸡肋的功能,至少对于在终端中使用更多的我来说是这样。
我觉得buffer在Emacs世界里面已经具备奠基者优势了,大家一旦适应了buffer的操作体验,tabbar就非常鸡肋:功能是重叠的,操作和业务逻辑却不太一样。反正我是无法适应tabbar了,除非在Vim里面(笑)。在一些新的编辑器,比如Atom里面,tab是一个基本的设计,所以在Atom的世界里,tab具有奠基者优势,Atom社区自然会大力推崇tab,正如Emacs社区里大家更喜欢buffer。我觉得如果特别喜欢tab的使用的体验的话,建议完全不用buffer,然后自己造个小轮子,把逻辑完全修正成Vim的tab或者Atom的tab,这样能得到最好的用户体验。
我刚从Vim转到Emacs用过Tab bar。但是Emacs的buffer更高效,特别是和helm-mode或者Ivy-mode合用 (再加上用ibuffer打开buffer list),相比之下,再加上tab bar就很鸡肋了,除了装饰没什么用处。
也不是完全没用,当你只想动一个指头按鼠标的时候,tabbar 就可以搬出来用了。
想用 tabbar,参考 AquaEmacs。 Emacs 里用 buffer 是更高效的方式。
ido-mode
和 C-x b
足矣。
这里只给习惯用tab的同学做个参考
(defun dotspacemacs/user-config ()
(define-key evil-normal-state-map "bn" 'tabbar-forward-tab)
(define-key evil-normal-state-map "bp" 'tabbar-backward-tab)
(defun my-tabbar-buffer-groups ()
(list (cond ((string-match "\\(\*[^\*]*\*\\|TAGS\\|magit.*:\\)" (buffer-name)) "emacs")
((eq major-mode 'dired-mode) "emacs")
(t "user"))))
(setq tabbar-buffer-groups-function 'my-tabbar-buffer-groups)
)
(custom-set-variables
'(tabbar-buffer-home-button (quote (("") "")))
'(tabbar-scroll-left-button (quote (("") "")))
'(tabbar-scroll-right-button (quote (("") "")))
'(tabbar-separator (quote (1.5))))
'(tabbar-default ((t (:background "brightblack" :foreground "black" :height 0.9))))
'(tabbar-selected ((t (:inherit tabbar-default :background "black" :foreground "color-252" :weight bold))))
'(tabbar-selected-modified ((t (:foreground "green"))))
'(tabbar-unselected ((t (:background "brightblack" :foreground "black")))))
用过elscreen和懒猫的awesome-tab一段时间,后来都删了。感觉只用switch buffer简洁够用了。多了tabber反而分散了注意力
懒猫的awesome-tab 你试试看 我觉得还不错
请问这种图是怎么画的?