这困扰了我很多年。我尝试解除绑定中的键序列.inputrc
,我已设置EDITOR
为 true 和 false,我已经阅读并重新阅读了 bash 和 readline 手册页。我使用 ksh 而不是 bash。
如何禁用键盘顺序的Esc行为v?
答案1
看起来您正在不知不觉地使用bash
其vi
模式。
在vi
模式中,bash
, 就像vi
有一个插入模式您可以在其中插入文本(以及替换模式这是它的一个变体)和命令模式您可以在其中输入动作或动作命令,例如x
删除字符、b
后移一个单词等。
您切换自插入/替换模式到命令模式使用Esc, 以及一些命令,例如i
, a
, A
, s
... 可以让您输入插入模式从命令模式。
在命令模式,该v
命令会打开一个编辑器来编辑当前行(该vi
编辑器没有绑定到 的命令v
,因此 ksh(bash 所基于的)可以自由地使用该编辑器来完成该特定任务)。
在这里,我觉得您不希望使用vi
键绑定的样式。bash
/readline
的默认键绑定是emacs
, 不是vi
,所以我怀疑您或您的系统管理员引入了一些默认启用该vi
模式的自定义。
可以通过添加一个set -o vi
in/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'
或者一个空字符串,这样它就被忽略了:
bind -m vi-command '"v": ""'