你使用Emacs的tabbar吗?

32

emacs的tabbar.el包可以在每个窗口中添加(缓冲)标签,它与aquamacs捆绑在一起,也可以通过安装emacs-goodies-el包添加到emacs23中。

你们任何一个使用emacs的高手真正使用过tabbar吗?我有点习惯于使用标签,但我想知道是否没有使用它会更加高效,并且如果除了检查您的缓冲区列表(C-x C-b)之外,是否有其他方式可以获取当前项目文件的概述。

顺便说一句,我真的很喜欢textmate的项目抽屉(和标签),但emacs中类似的东西看起来就是难看。

11个回答

32

我曾尝试使用它,但感觉它限制了我的工作流程,而不是改善了它。有很多出色的Emacs模式可以帮助组织许多缓冲区,但我并不认为将缓冲区映射到选项卡是其中之一。

想想最基本的场景 - 大量标签页。各种程序如何处理它 - 限制最大标签数(IntelliJ IDEA);启用选项卡滚动条(Firefox);无限减小选项卡大小(Google Chrome);创建选项卡行(IntelliJ IDEA)...这些解决方案都不是很好,通过在Emacs中不使用选项卡,我们少了一个要担心的问题。至少这是我的主观看法 - 其他人肯定会有不同的看法... 我个人只需要idoiswitchb

这里有一个关于ido的演示视频。


1
+1 for ido 模式。你还有类似的极客工具吗?=) - aL3xa
2
我使用helm的C-x b。没有尝试过iswitchb,但我猜它很相似。 天啊,我爱helm! - nephewtom

22

是的,我使用tabbar,以及sr-speedbar。

我自定义了tabbar以显示特定组中的文件,并修改了一些按键绑定,使浏览文件更容易。

顺便说一句,以下是我~/.emacs中相关的部分:

(require 'tabbar)
; turn on the tabbar
(tabbar-mode t)
; define all tabs to be one of 3 possible groups: “Emacs Buffer”, “Dired”,
;“User Buffer”.

(defun tabbar-buffer-groups ()
  "Return the list of group names the current buffer belongs to.
This function is a custom function for tabbar-mode's tabbar-buffer-groups.
This function group all buffers into 3 groups:
Those Dired, those user buffer, and those emacs buffer.
Emacs buffer are those starting with “*”."
  (list
   (cond
    ((string-equal "*" (substring (buffer-name) 0 1))
     "Emacs Buffer"
     )
    ((eq major-mode 'dired-mode)
     "Dired"
     )
    (t
     "User Buffer"
     )
    ))) 

(setq tabbar-buffer-groups-function 'tabbar-buffer-groups)

(global-set-key [M-s-left] 'tabbar-backward)
(global-set-key [M-s-right] 'tabbar-forward)

在Emacswiki上还有很多关于技巧的提示: http://www.emacswiki.org/emacs/TabBarMode


实际上,即使没有(setq tabbar-buffer-groups-function 'tabbar-buffer-groups),它也适用于我的Emacs24.0.93。 - Adobe

10

不。

我使用iswitch-b。

按下C-x b "缓冲区名前几个字母",然后按下C-s旋转到我想要的特定文件只需要不到2秒钟的时间,而且我不需要移动手到鼠标上。


7

不行。如果进行正确的自定义,我可能会被说服再次尝试它,但默认情况下对我来说几乎没有用处,因为我通常会打开超过100个缓冲区。ibuffer通过其过滤和分组是我尝试过的管理大量缓冲区的最佳方法。


谢谢,我不知道ibuffer过滤器选项。 - Beatlevic
1
我使用路径名过滤技巧(http://www.emacswiki.org/emacs/IbufferMode#toc9)使得`/f`也能够匹配到dired的缓冲区,然后用`/g`为当前过滤器创建一个命名组。大多数情况下,这已经足够让我不会被压倒了 :) 如果你要长时间地处理它们,可以保存过滤器组,并通过使用C-k删除和C-y移动组标题(除了默认组总是最后一个)来重新排列它们。 - phils

5
我喜欢使用 speedbar 进行快速缓冲区导航。我在我的 .emacs 文件中配置了它。
(speedbar-change-initial-expansion-list "buffers")
(global-set-key  [f8] 'speedbar-get-focus)

当我按下F8键时,会弹出一个新的框架,其中列出了打开的缓冲区列表,您可以将光标移动到要选择的缓冲区上并激活它。再按一次F8返回主框架。

5

标签页并不仅适用于使用鼠标的用户。看看Vim的可能工作流程:使用gt命令跳转到下一个标签页,或者使用gT命令跳转到上一个标签页。假设你有一个专门为Vim设置的窗口:你可以轻松地在不同的缓冲区之间切换。是的,标签页可能更适合只有少量缓冲区的用户。如果你有数百个缓冲区,这种方法就不太可行了。


3

说实话,当涉及到标签、菜单和工具栏时,你会发现比emacs更好的编辑器。Emacs明显鼓励你使用键盘,让你的鼠标保持闲置。

Tabbar或其他任何选项卡管理工具在打开大量缓冲区时会遇到困难。你也不想在选项卡中显示所有缓冲区。必须把手从键盘上移开去拿鼠标,然后点击选项卡,再把手从鼠标上移开放回键盘,这显然是浪费时间的做法,因为可以用简单的按键操作代替。

你能为你的emacs和自己做的最好的事情是在你的.emacs配置文件中添加以下配置:

(menu-bar-mode -1)          ;hide menu-bar
(scroll-bar-mode -1)            ;hide scroll-bar
(tool-bar-mode -1)          ;hide tool-bar

这将迫使您忘记使用鼠标的旧方法(例如使用选项卡栏或菜单...),而改为使用手指。


1

到目前为止,我还没有尝试过它,但在我从XEmacs切换回GNU Emacs之前,我非常频繁地使用XEmacs标签。我发现当我打开许多源文件时,这是跳转到正确文件的最快方法之一。

现在我知道了tabbar,我正在尝试它;到目前为止,我很喜欢它。

  • 约翰

1

如果你使用鼠标,选项卡确实很有用,而 Emacs 的主要优点之一(对我来说)就是可以避免使用鼠标。

因此,总的来说,选项卡并不是很有用。

当我浏览网页(使用 w3m)时,我发现选项卡很有用,但在那种情况下我使用了鼠标...


请注意,w3m似乎有自己的标签页 - 是的,它们非常有用,尽管从PuTTY会话中打开有点棘手... - SamB
3
相反,只需将键盘快捷键 Ctrl-PgUp 和 Ctrl-PgDn 绑定到移动到前一个选项卡和后一个选项卡的命令上,就可以在不使用鼠标的情况下导航选项卡。 - Teemu Leisti
直接通过数字切换选项卡。 - learner

1

选项卡看起来好像被遗弃了一样。

那么elscreen怎么样呢?

可以通过http://melpa.milkbox.net/#/elscreen找到 - 或者安装emacs-elpa(或melpa)。

Elscreen对我非常有用。


1
elscreen似乎会在我的emacs屏幕上出现闪烁,而没有明显的原因。 - daj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接