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

Jon*_*nah 21 bash vi

我刚刚发现了set -o vi.

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

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

der*_*ert 19

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

您要查找的键名为vi-movement-mode,默认为\e(escape)。您还可以将它绑定到(这很愚蠢)像这样的等号。第二行去掉了要转义的绑定:

$ bind "=":vi-movement-mode 
$ bind -r "\e"
Run Code Online (Sandbox Code Playgroud)

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

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

  • @Jonah 我只是试着做同样的事情。你有没有想过这个? (2认同)
  • https://unix.stackexchange.com/questions/303282/in-bash-vi-mode-map-jk-to-exit-insert-mode 由于某种原因你需要引号`bind '"jk":vi-movement-模式'` (2认同)