各位,我平时是下面这种方式来使用的。我想知道如果不借助tmux,单纯用emacs的话,有什么方式可以满足这个习惯。
我平时在终端中用emacs,同时用tmux。在emacs中需要打开多个文件。切换来切换去。
我在一个tmux的标签里开一个emacsclient,显示一个文件,同时用emacs分割窗口,显示不同的文件。。
在另一个tmux的标签里开另一个emacsclient,显示第二个文件,同时也用分割窗口。显示不同的文件。
然后时不时切换到不同的标签看不同的文件。
类似这种方式使用,如果不借助tmux的标签,emacs有办法做到这种效果么?tabbar之前用过,后来看着占地方,而且也用不到鼠标就放弃了。
我的需要基本上是需要保持好几个emacs的窗口 然后保持分屏的状态切换时不变。这样可以让我同时保留多个文件的位置随时查看。不知道emacs本身有没有什么插件或者办法能达到这个效果。
tab 不能满足要求。tab好像无法保留emacs的分屏状态。我这种用法有点类似需要多个屏幕,或者多个工作区的感觉。
第一个屏幕
分成左右两屏,左边a文件,右边b文件。
第二个屏幕
分成左边一屏,右边又分了上下两屏。分别显示着 c d e文件
第三个屏幕
用来作备用的。随时打开其他的任意文件
在不同的屏幕切换的时候,要保留它之前的分屏状态。便于我切换回来之后显示器当前状态和之前是一样的。
tabbar貌似达不到这种效果吧。目前用tmux的标签是可以达到的。不知道emacs有没有其他的方式可以不依赖tmux。
我不知道其他人是怎么用的,或者说emacs能不能有这种方式的工作区的概念?
看看doomemacs的workspace的实现呢
jadestrong:
workspace
这个没用过。我一直用spacemacs。它可以达到这个效果么?我去看看。
多个 frame,每个有自己的 window layout。
通过 register 来记忆多个 frame layout,要恢复时访问对应名称的 register 即可。
能否介绍一下你的用法。很多时候各种功能的好处完全和用法有关。
是的,就是这种需要。这种方式有需要什么扩展或者什么设置么?
新建一个 frame:C-x 5 b
将当前 frame 的 window layout 保存到 register a:C-x r f a
恢复 register a 中保存的 frame layout:C-x r j a
不新建 frame 也行,也可以使用同一个 frame,但是用 register 缓存多组 window layout:C-x r w a
多谢。这个效果是我要的。刚试了一下,切换和保存layout稍微不如用tmux标签来的快。不过至少不依赖tmux了。
我再研究一下。
可以体验下 consult,内置的 register save 和 load 功能非常方便,还可以preview。
hilde
2022 年7 月 20 日 11:35
16
就是用 bulry-bookmark-windos
将 windows layout 保存为一个 bookmark,然后用 bookmark-jump
或者 burly-open-bookmark
恢复之前的 windows layout;还可以使用burly-bookmark-frames
保存所有的 frames.
burly 最新的 版本 0.3-pre, 可以结合 tab-bar-mode, 一个 tab 对应 一个 layout, 用 burly 相应的命令保存恢复:
Command burly-tabs-mode
, which integrates Burly with tab-bar-mode
. When active, Burly bookmarks are opened in new tabs, and the tabs are named according to the bookmark.
hilde
2022 年7 月 20 日 11:41
17
这个方案相对于 window register 的好处就是它可以在多个 Emacs sessions 里使用
rua
2022 年7 月 20 日 11:41
18
平时基本就用亮点
按照项目或者名字创建一个新的 workspace
按照名字切换 workspace
;;; -*- lexical-binding: t -*-
;; This is not about the "Windows" OS, but rather Emacs's "windows"
;; concept: these are the panels within an Emacs frame which contain
;; buffers.
;; replace `tab-bar'
(eat-package eyebrowse
:straight t
:hook (after-init-hook . (lambda ()
(eyebrowse-mode t)))
:init
(setq
;; since this used in meow config, must set here
;; if enable eyebrowse in on-init-ui-hook
eyebrowse-keymap-prefix (kbd "C-c C-w")
eyebrowse-new-workspace t
eyebrowse-mode-line-style 'current)
spacemacs的 spacemacs-layouts layer 和doom的应该是一个东西
现在用的 i3 似乎就是这种特色. 不过, 这是在 emacs 之外了. 算是窗口管理器, 即所谓的 wm