怎样隐藏 doom-modeline 里的 buffer name

  • 操作系统为:macOS 10.15.6 (19G73)
  • Emacs 版本为:emacs-plus@27
  • Emacs 配置为:doom-emacs

大家好,我最近刚开始使用 Emacs,因为用了 centaur-tabs 所以想隐藏 doom-modeline 里的 buffer name,如图:

我阅读了 doom-modeline README 中的 Customize 并在其中找到了有关联的配置,仔细阅读后发现没有隐藏的选项。

;; Determines the style used by `doom-modeline-buffer-file-name'.
;;
;; Given ~/Projects/FOSS/emacs/lisp/comint.el
;;   auto => emacs/lisp/comint.el (in a project) or comint.el
;;   truncate-upto-project => ~/P/F/emacs/lisp/comint.el
;;   truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el
;;   truncate-with-project => emacs/l/comint.el
;;   truncate-except-project => ~/P/F/emacs/l/comint.el
;;   truncate-upto-root => ~/P/F/e/lisp/comint.el
;;   truncate-all => ~/P/F/e/l/comint.el
;;   truncate-nil => ~/Projects/FOSS/emacs/lisp/comint.el
;;   relative-from-project => emacs/lisp/comint.el
;;   relative-to-project => lisp/comint.el
;;   file-name => comint.el
;;   buffer-name => comint.el<2> (uniquify buffer name)
;;
;; If you are experiencing the laggy issue, especially while editing remote files
;; with tramp, please try `file-name' style.
;; Please refer to https://github.com/bbatsov/projectile/issues/657.
(setq doom-modeline-buffer-file-name-style 'auto)

接着我尝试了一下 nil ,但是正如预料的,没有效果。

(setq doom-modeline-buffer-file-name-style nil)

接着我 Google了 emacs hide modeline buffer nameemacs hide major mode in modeline 但发现结果都是 hide minor mode 或者直接 hide modeline,也许是我忽略了某些搜索结果。

所以请问怎样才能隐藏 doom-modeline 里的 buffer name呢?谢谢 :smile:

(doom-modeline-def-segment buffer-info
  "buffer info segment."
  "")
(doom-modeline-def-segment buffer-info-simple
  "simple buffer info segment."
 "")
1 个赞

感谢您的回复,不过我有些愚钝,不太能理解到该怎么使用这段代码。 当我把它放到 ~/.doom.d/config.el 里时,出现了 void-function 的错误,

我尝试看了一下源码,由于自己的 Emacs Lisp 水平太低,所以未能看懂您的代码

还请您多多指教 :bowing_man:

因为doom-odeline-def-segment 在加载 doom-modeline 文件之前被使用,而它有没有使用 ;;;###autoload 魔法注释. 可以使用 doom自带的

(after! doom-modeline
  (doom-modeline-def-segment buffer-info
    "buffer info segment."
    "")
  (doom-modeline-def-segment buffer-info-simple
    "simple buffer info segment."
   ""))
;; 或在 执行 doom-modeline-def-segment 之前使用
(require 'doom-modeline)
2 个赞

太棒了!开心😄 ~

谢谢二位的帮助!我从你们的回答中获取了新的知识和方法,非常感谢!

解决问题就好。不过这需求着实奇怪,tab多占一行空间并没有太多用处,还耗去不少内存啊。

因为之前用的是 Sublime, VSCode 之类的,又因为经常用浏览器里的 tab,对 tab 比较习惯,感觉比较符合培养出来的直觉。只是目前想要达到类似的体验,感觉还是要花费一番精力。

tab 耗去不少内存之前我倒是没有这样的意识,感谢指点。:smiley:

个人觉得,用Emacs习惯buffer切换更有效率。

好的👌,我尝试一下~

我刚开始也是用的buffer切换,去年开始用了猫哥的awesome-tab 以后就习惯用tab切换buffer了,tab更直观一些。 目前最新版27.1 自带tab功能。

其实啊,在chrome里开了50+个网页的时候,看着那堆tab心里就有一万头草泥马飘过 :joy:

:smile: 同感,你不说我还真没注意有那么多,刚数了一下自己Chrome的Tabs, 40+ 正好排满屏幕。日常都是太满了才删几个。 不过Emacs里面我一般最多开7个,太多了就直接清空,只保留当前。

Emacs China 论坛什么时候开发了Chrome应用,不错啊 :+1: :+1:

哈哈哈,分享一下我个人习惯(一般不会超过15个):

  1. 我一般不用的随手就关了,使用 Chrome 的 Vim 模拟插件, x 或者 数字 + x
  2. 关的多的话会用: Keyboard Shortcuts to Close Other/Right Tabs
  3. 一般稍后读的,我都会存在:Chrome Read Later (自己写的一个小插件)

27的 tab-bar-mode 也很不错,可以在多个screen的布局间切换,可惜目前Mac上还用不了。

mac能用吧,只是功能还有欠缺。

我用的编译好的dmg安装的,功能能用,但是不能显示tab-bar栏,应该和Mac的native gui toolkit有关:https://www.reddit.com/r/emacs/comments/ek3ai3/emacs27_tabbar_with_cocoa_builds_not_working/

你需要的是tab-line

27.1自带tab-bar栏,还有tab-line? 囧,感谢大佬提醒,因为我自定义了header-line的原因,之前尝试centaur-tabs, awesome-tab的时候,发现都是用的header-line实现的tab,会覆盖我自定义的header-line,然后我就放弃了tab,感觉不是必须的,buffer50+…… 但当我每次看到vsc的tab和tab的下面的那一行显示文件完整路径,就会想我emacs居然整不出来这个界面,虽然不用tab来切换buffer,但总感觉这样看起来要舒服一点

看了27.1的tab-bar栏和tab-line不是用header-line实现的,与我自定义header-line不冲突

1 个赞

tab-line不会占据header-line。不过tab-bar这个名字会很让人迷惑。tab-line配置下能接近centaur-tabs的效果,理论上性能会好些,不过还是等成熟一段再说吧。我近期不打算使用。

不,我需要的是tab-bar, 我觉得tab-line没有tab-bar实用,同一个window下的buffer切换我用switch-buffer就很方便了。而tab-bar可以保存整个screen的布局。