【问题标题】:properly editing a shell buffer with evil-mode使用 evil-mode 正确编辑 shell 缓冲区
【发布时间】:2016-10-11 01:41:08
【问题描述】:

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

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

emacs 不是在我想要的位置插入a,而是在单词末尾插入a

发生了什么?如何实现所需的正常行为?

这只发生在 shell 缓冲区中。

【问题讨论】:

  • 缓冲区的名称是*shell**terminal*、还是*ansi-term*,还是别的什么?我不熟悉multi-term,所以我不确定你使用的是哪个 Emacs shell/终端模拟器。
  • 你找到答案了吗?
  • 是的。您实际上必须通过另一个组合键键入 ESC。比如,选择 C-C C-E。这应该产生一个不被emacs吃掉并直接进入zsh的ESC。看看我的配置文件 github.com/ninrod/dotfiles

标签: emacs evil-mode multi-term


【解决方案1】:

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

您可以通过在 emacs 模式下点击 C-C C-E 来生成被终端吃掉的 ESC,但不是 emacs。这是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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多