如何在编辑器中打开上一个命令的 bash 中禁用 Esc-v?

如何在编辑器中打开上一个命令的 bash 中禁用 Esc-v?

这困扰了我很多年。我尝试解除绑定中的键序列.inputrc,我已设置EDITOR为 true 和 false,我已经阅读并重新阅读了 bash 和 readline 手册页。我使用 ksh 而不是 bash。

如何禁用键盘顺序的Esc行为v

答案1

看起来您正在不知不觉地使用bashvi模式。

vi模式中,bash, 就像vi有一个插入模式您可以在其中插入文本(以及替换模式这是它的一个变体)和命令模式您可以在其中输入动作或动作命令,例如x删除字符、b后移一个单词等。

您切换自插入/替换模式命令模式使用Esc, 以及一些命令,例如i, a, A, s... 可以让您输入插入模式命令模式

命令模式,该v命令会打开一个编辑器来编辑当前行(该vi编辑器没有绑定到 的命令v,因此 ksh(bash 所基于的)可以自由地使用该编辑器来完成该特定任务)。

在这里,我觉得您不希望使用vi键绑定的样式。bash/readline的默认键绑定是emacs, 不是vi,所以我怀疑您或您的系统管理员引入了一些默认启用该vi模式的自定义。

可以通过添加一个set -o viin/etc/bashrc/etc/bash.bashrc系统默认自定义文件bash在您的系统上的任何位置,或set editing-mode vi/etc/inputrc.

或者您自己的~/.bashrc~/.inputrc.

您可能想将其改回set -o emacsin~/.bashrcset editing-mode emacsin ~/.inputrc

请注意,该emacs模式具有类似的功能绑定到Ctrl+XCtrl+E

如果您希望使用该vi模式,并且不想v生成编辑器,那么您可以将小部件分配给以下v以外的其他edit-and-execute-command部件:

bind -m vi-command '"v": abort'

或者一个空字符串,这样它就被忽略了:

bind -m vi-command '"v": ""'

相关内容