我在 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-$
完成变量名称)。