这困扰了我多年。我曾尝试取消绑定在按键顺序.inputrc
,我已经设置EDITOR
真假,我已阅读并重新读取的bash和readline手册页。我使用了 ksh 而不是 bash。
如何禁用Esc后跟v键盘序列的行为?
Sté*_*las 12
看起来你在不知不觉中使用bash
它的vi
模式。
在vi
模式中,bash
, likevi
有一个插入模式,您可以在其中插入文本(以及一个替换模式,它是它的变体)和一个命令模式,您可以在其中输入运动或动作命令,例如x
删除一个字符,b
向后移动一个单词, 等等。
您从切换插入/替换模式到命令模式与Esc和几个命令,如i
,a
,A
,s
...可以让你进入插入模式从命令模式。
在命令模式下,该v
命令会打开一个编辑器来编辑当前行(该vi
编辑器没有绑定到 的命令v
,因此 ksh(基于 bash)可以自由地将其用于该特定任务)。
在这里,在我看来,您不希望使用vi
键绑定的样式。bash
/readline
的默认键绑定是emacs
, 不是vi
,所以我怀疑您或您的系统管理员已经引入了一些自定义vi
来默认启用该模式。
可以通过在系统set -o vi
上/etc/bashrc
或/etc/bash.bashrc
系统上的系统默认自定义文件中bash
或set editing-mode vi
在/etc/inputrc
.
或者可能是您自己的~/.bashrc
或~/.inputrc
.
您可能希望将其改回set -o emacs
in~/.bashrc
或set editing-mode emacs
in ~/.inputrc
。
请注意,该emacs
模式有一个类似的功能绑定到Ctrl+XCtrl+E
如果您希望使用该vi
模式,并且不想v
生成编辑器,那么您可以将一个小部件分配给v
其他人,edit-and-execute-command
例如:
bind -m vi-command '"v": abort'
Run Code Online (Sandbox Code Playgroud)
或者到一个空字符串,所以它被忽略:
bind -m vi-command '"v": ""'
Run Code Online (Sandbox Code Playgroud)