使用evil-mode正确编辑shell缓冲区

3
我正在使用evil-mode。当我输入M-x multi-term时,会打开zsh终端。
接着,在终端中键入bcdef。然后按下ESC进入正常模式,再按下b让光标停留在bcdef单词的b上。然后按下i进入插入模式,再输入a来插入一个a
但是,emacs并没有将a插入到我的期望位置,而是将其插入了单词的末尾。
问题出在哪里?如何实现正常的预期行为?
这种情况只会发生在shell缓冲区中。

缓冲区的名称是 *shell**terminal**ansi-term* 还是其他什么?我不熟悉 multi-term,所以不确定你正在使用哪个 Emacs shell/终端仿真器。 - Gordon Gustafson
你找到答案了吗? - Diego Alvarez
是的,你实际上需要通过另一个键组合键入ESC。比如,选择C-C C-E。这应该产生一个不被emacs吃掉并直接进入zsh的ESC。看一下我的配置文件github.com/ninrod/dotfiles - ninrod
1个回答

0

你需要生成一个被终端吃掉但不被emacs/evil吃掉的ESC。如果你只是按下ESC,那么emacs/evil会吃掉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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接