使用邪恶模式正确编辑 shell 缓冲区

properly editing a shell buffer with evil-mode

我正在使用邪恶模式。当我输入 M-x multi-term 时,zsh 打开。

然后我在终端中输入 bcdef。然后我点击 ESC 进入正常模式,然后点击 b 所以我的光标放在 bcdef 单词的 b 上。然后我点击 i 进入插入模式,然后我输入 a 插入一个 a

emacs 没有在我想要的地方插入 a,而是在单词的末尾插入了 a

这是怎么回事?我如何实现所需的正常行为?

这只发生在 shell 缓冲区中。

您必须生成一个被终端吃掉但不被 emacs/evil 吃掉的 ESC。如果你只按 ESC,那么 emacs/evil 将吃掉 ESC 而不会将 ESC 发送到终端。

您可以通过在 emacs 模式下点击 C-C C-E 来生成一个被终端而不是 emacs 吃掉的 ESC。这是 C-h k 告诉我的:

C-c C-e runs the command term-send-esc (found in term-raw-map), which
is an interactive compiled Lisp function in
‘~/code/sources/dotfiles/emacs/elpa/multi-term-20160619.233/multi-term.el’.

It is bound to C-c <escape>, C-c C-e, <emacs-state> C-c <escape>.

(term-send-esc)

Send ESC in term mode.