我刚刚发现了 的奇迹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 文档包含完整的详细信息。