调查一下 spacemacs 用户都使用哪种模式

  1. vim
  2. emacs
  3. hybrid

0 投票者

最好能说明一下你为什么选择这种模式

我是 3 hybrid,因为我开始时是 emacs 用户,后来接触了 evil,开始学习 vim 的快捷键。属于两种都能用,但两种都不精的类型 :joy:,所以最后选的 hybrid 杂交模式。

Vim + Emacs: (defalias 'evil-insert-state 'evil-emacs-state)

@lululau 你不是用的 spacemacs?

是 Spacemacs

为什么不用hybrid?这个和hybrid有什么不一样吗?

hybrid 没尝试过,我的做法就是用 emacs-state 充当 insert-state,就是你在 vim 模式下按 i/a/c 或者 caw 之类的是跳到 emacs-state

建议你尝试一下 hybrid 模式,就是你说的效果,但是各方面更完善。因为是官方的,consistency 更好

嗯,我试一下

前Vim党。主力肯定是Vim模式。基本上已经习惯部分Ctrl+* 这种键了。毕竟不是所有时候Vim模式都可用。

最开始的时候,一旦Vim模式失败很抓狂。

:clap:

因为是官方的,做了很多优化,具体的情况你可以查看一下 spacemacs 的 issue 列表,搜 hybrid,里面回复最多的一个应该就是了。

我觉得最主要是一致性。而按键方面有专门的 hybrid-map 供你使用。

1 个赞

hybrid style 应该就是把 evil-insert-mode 别名成 emacs-state,另外有一个独立的 keymap

不过发现 hybrid style 没有类似 emacs-state 的 evil-exit-hybrid-state,可以自己加一个:

(with-eval-after-load 'evil-commands
  (evil-define-command evil-exit-hybrid-state (&optional buffer message)
    "Exit Hybrid state.
Changes the state to the previous state, or to Normal state
if the previous state was Hybrid state."
   :keep-visual t
   :suppress-operator t
   (interactive '(nil t))
   (with-current-buffer (or buffer (current-buffer))
     (when (evil-hybrid-state-p)
       (evil-change-to-previous-state buffer message)
       (when (evil-hybrid-state-p)
         (evil-normal-state (and message 1)))))))
1 个赞

这个是做什么用的?

从 hybrid-state 切换为先前的 state,如果不存在先前的 state 就退化为切换到 evil-normal-state

先前 state 是指?

比如你之前是从 normal-state 切到当前的 hybrid-state 的,那么这个函数就是切换回 normal-state; 你之前是从 motion-state 切换到当前的 hybrid-state 的,那么这个函数就是切换回 motion-state,等等

我一直 normal 和 motion 傻傻分不清楚 :joy:,能解释一下吗?

好吧,我 Google 了一下,找到这个:

貌似 motion 的作用只是限移动,没有编辑命令?比如在 help buffer?

是的,helper buffer, spacemacs buffer 都是 motion-state,光标是紫色的;

我这个例子举得不太好

没有关系,讨论问题就是这样的。我也从你的回复中学到了 motion-state 和 normal-state 的区别,感谢。