vi shell 模式的自定义键绑定,即“set -o vi”?

vi shell 模式的自定义键绑定,即“set -o vi”?

我刚刚发现了 的奇迹set -o vi,并且很好奇是否可以通过与自定义 vi 或 vim 相同的方式来自定义此 vi shell 模式?

例如,创建自定义键绑定以将更方便的键或组合键映射到esc?

如果当前不支持,那么更改程序的源代码并在某些自定义中进行硬编码会有多困难,或者这是一个坏主意吗?

答案1

是的,您可以使用内置命令更改键映射(对于类似 vi 或 emacs 的模式)bind。这实际上是一个 readline 功能(因此您可以在所有 readline 程序中拥有类似 vi 的绑定,而不仅仅是 bash)。

您要查找的键名为vi-movement-mode,默认为\e(escape)。您还可以将它绑定到(这是相当愚蠢的)这样的等于。第二行摆脱了转义的绑定:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

运行bind -p将显示您可以绑定的所有键及其当前绑定(如果有)。

您可以将bind命令放入您的 中.bashrc,也可以进行编辑~/.inputrc以使其适用于您运行的所有 readline 程序。 readline 文档包含完整的详细信息。

相关内容