目前在用doom emacs,每次切换,记不得有哪些workspace,都需要SPC TAB TAB看下,然后再SPC TAB 1选择
用自带的tab-bar-mode吧。
persp-mode完全没搞明白咋用,tab-bar 和 tmux vim 的 tab 逻辑基本一致,使用起来就很直观,
tab-bar-mode是对buffer的,persp-mode是对工作区的,比如同时做一个c++项目和一个python项目,那么可以有两个工作区,每个工作区里面有不同的buffer
看了一下,用SPC TAB . 就好
基本是一样的,都是不同的工作区有不同的buffer和布局。
alt 加 数字就行了啊。 doom emacs 默认的快捷键。
帖子有点旧了,不知道还有没有这个需求。
我是通过 repeat-mode
来实现的,非常方便。
只需要执行了下面 map 中 workspace 相关的函数,那么就会开启一个临时的 map,这些快捷键就都可以使用了;如果键入了非此 map 中的按键,那么就自动取消临时 map 并执行其他操作。
(repeat-mode 1)
(defun add-to-repeat-map (cmd-or-map target-repeat-map)
(if (symbolp cmd-or-map)
(put cmd-or-map 'repeat-map target-repeat-map)
(when (keymapp cmd-or-map)
(map-keymap
(lambda (_key cmdormap)
(add-to-repeat-map cmdormap target-repeat-map))
cmd-or-map))))
(after! repeat
(defvar +workspace/switch-repeat-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "C-h") #'+workspace/switch-left)
(define-key map (kbd "C-l") #'+workspace/switch-right)
(define-key map (kbd "H") #'+workspace/swap-left)
(define-key map (kbd "L") #'+workspace/swap-right)
(define-key map (kbd "0") #'+workspace/switch-to-final)
(define-key map (kbd "1") #'+workspace/switch-to-0)
(define-key map (kbd "2") #'+workspace/switch-to-1)
(define-key map (kbd "3") #'+workspace/switch-to-2)
(define-key map (kbd "4") #'+workspace/switch-to-3)
(define-key map (kbd "5") #'+workspace/switch-to-4)
(define-key map (kbd "6") #'+workspace/switch-to-5)
(define-key map (kbd "7") #'+workspace/switch-to-6)
(define-key map (kbd "8") #'+workspace/switch-to-7)
(define-key map (kbd "9") #'+workspace/switch-to-8)
(define-key map (kbd "`") #'+workspace/other)
(define-key map (kbd "TAB") #'+workspace/display)
map))
(add-to-repeat-map +workspace/switch-repeat-map '+workspace/switch-repeat-map))
所以我的使用流程就是 SPC TAB TAB
看看有啥,然后直接按数字切换,并且可以通过 C-l
、C-h
、L
、H
切换和调整 workspace 顺序。