persp 能不能做到在SPC TAB TAB显示出几个workspace的tab之后,再按1,2,3数字键做workspace的选择

目前在用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-lC-hLH 切换和调整 workspace 顺序。