如何在bash上打开vi编辑模式的所有默认绑定键?

如何在bash上打开vi编辑模式的所有默认绑定键?

我在 Bash 上使用 vi 编辑模式。根据man readline,有几个默认绑定键可在 vi 编辑模式下工作。有些键工作正常,但其他一些默认键不起作用。

例如,man readline说,

VI Command Mode functions
...
         "C-E"  emacs-editing-mode
...

bind -p在我的 Linux 机器上,显示“emacs-editing-mode”未绑定在任何键上。

$ bind -p | grep emacs-editing
# emacs-editing-mode (not bound)

这是正常情况吗?如何在bash上打开vi编辑模式的所有默认绑定键?我必须在 .inputrc 上手动绑定按键吗?

答案1

Bash 修改了一些默认的 readline 绑定,包括这个。代码位于initialize_readline函数于bashline.c

/* In Bash, the user can switch editing modes with "set -o [vi emacs]",
   so it is not necessary to allow C-M-j for context switching.  Turn
   off this occasionally confusing behaviour. */

模式切换键是唯一未绑定的键。绑定了一些附加键(例如,用于特定于 bash 的完成,例如M-$完成变量名称)。

相关内容