我发现有相似功能的包很多, persp,window-purpose,eyebrowse 等等。你用的什么包?有没有什么 best practices?
用 spacemacs 的 project layouts,一个 project 一个 layout
这个办法不错,能不能具体说说怎样操作的?比如怎样保存 project layout?
SPC p l
创建一个 project layout
SPC l s/S
save current open layouts (to a file)
SPC l L
load layouts from file
SPC p l
在我这是别的函数:
你那里绑定的函数名是什么?
应该是类似的,只不过我用 helm
我的绑定是: (spacemacs/helm-persp-switch-project ARG)
另外我写了一个可以左右移动 layout 的配置:
还有一个类似于 spacemacs/alternate-buffer
的函数,可以切换到上一个激活的 layout
左右移动是指?是在同一个 frame 下切换吗?
比如,这是 layout 列表:
prjA | prjB | prjC | prjD
现在 想让 prjB
挪到最后面去,变成:
prjA | prjC | prjD | prjB
那么首选选中 prjB,然后按两下 >
就可以了
我有这个需要是因为,我通常打开的 layout(project) 比较多,也比较固定,所以我切换 project 都不看 layout 列表中的显示,预先背下来每个 layout 的索引,直接 SPC l n
(n 是自然数,我实际配置的是 s-n
)切换就可以了,但是有的时候我需要临时打开别的项目,这样就把我背下来的那个默认的 layout 列表顺序打乱,我就需要调整一下某个 layout 在列表中的顺序
这个好像和 eyebrowse 提供的功能有点相似
非常感谢!学到了不少东西
我只用了 persp-mode,persp-mode 里也可以再套 eyebrowse,但是感觉这样太复杂了
是的,确实有点。我还混合了 window-purpose 用 ,因为有时我不想弹出窗口破坏我当前的布局
我正在寻觅这个功能! 感觉用layout太复杂了,我只想不破坏一个临时出现的窗口布局,不需要保存成layout(就算保存了,可能以后我也就忘了),不知道该怎么实现,楼主有没有什么好的经验?
就用 window-purpose 就行,spacemacs develop 中已经集成了这个包。
可以为每个窗口定义一个 purpose,不满足 purpose 的 buffer 不会出现在这个窗口。
谢谢!
我看了一下 window-purpose, 用到这两个函数实现了:
purpose-save-window-layout: save current layout (by name)
purpose-load-window-layout: load layout (by name)
第一个函数还是把 layout 保存到了本地。 第二个函数根据 layout 的名字载入保存过的layout。
感觉载入layout时还是会记不住保存过的layout都是干啥的啊。
刚看到论坛里也有讨论这个功能的,Emacs暂存窗口layout
用ivy-push-view
保存的是
一个类似于 {} bufname1 bufname2 xxx这样的一个view
不仅有“layout”的名字,还列出了buffer,似乎更加好用。
Mac,用karabiner把右command映射成单按ESC,组合Hyper(就是下面的C-H-M(-S)-[1234]
),然后设置下面的keybinding:
- 右command+1234切换layouts
- 左command+1-9切换/创建workspace
-
option-1234...
切换窗口
(global-set-key (kbd "C-H-M-!") 'spacemacs/custom-perspective-@Research )
(global-set-key (kbd "C-H-M-@") 'spacemacs/custom-perspective-@Notmuch )
(global-set-key (kbd "C-H-M-#") 'spacemacs/custom-perspective-@Elfeed )
(global-set-key (kbd "C-H-M-$") 'spacemacs/custom-perspective-@Lisp )
(global-set-key (kbd "H-1") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-1-and-exit)
(global-set-key (kbd "H-2") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-2-and-exit)
(global-set-key (kbd "H-3") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-3-and-exit)
(global-set-key (kbd "H-4") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-4-and-exit)
(global-set-key (kbd "H-5") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-5-and-exit)
(global-set-key (kbd "H-6") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-6-and-exit)
(global-set-key (kbd "H-7") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-7-and-exit)
(global-set-key (kbd "H-8") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-8-and-exit)
(global-set-key (kbd "H-9") 'spacemacs/workspaces-transient-state/eyebrowse-switch-to-window-config-9-and-exit)
我现在用 spacemacs 默认的 layout 管理,主要是基于 project 进行管理
- 用
SPC p l
创建基于项目的 layout - 用
SPC l 1, 2, 3...
切换 layout,或者用SPC l TAB
切换为上一个 layout - 用
SPC l w 1, 2, 3...
切换工作区,如果数字没有对应的工作区,就会自动创建一个。工作区默认是匿名的。 - 用
SPC 1, 2, 3...
切换窗口
modeline 最左侧显示 layout 名,然后是工作区(子 layout),最后是窗口号。
试用一段后表示 spacemacs (develop branch) 的默认已经够我用的了。
SPC p l
创建的 layout 在重启 spacemacs 后就没有了,能将其保存吗?