当前的 zle 键映射/模式是什么?

当前的 zle 键映射/模式是什么?

例如,如果我按下正确的按键组合进入viins并离开终端,然后忘记了,我如何知道我什么时候回来?我如何知道默认模式是什么?该指南有这样的内容:

如果您处于错误的模式,~/.zshrc 中的“bindkey -e”将带您进入 emacs 模式,“bindkey -v”将带您进入 vi 模式。

但什么模式?我想在打字之前知道。据我所知, $KEYMAP 特殊变量仅可用之内zle 小部件,我在 zshell 用户指南中找不到任何man zshzle关于如何判断当前模式的信息。

任何帮助或见解将不胜感激。

答案1

TL;DR:执行 a bindkey -lL main,您将在单词 之前看到键盘映射的名称main

从我读到的文档似乎“当前”键盘映射由名称表示main。这通常是viinsemacs键盘映射的别名。

更远向下它指出:

-l                (小写“L”)

列出所有现有的键盘映射名称;如果给出任何参数,则仅列出那些键盘映射。

如果-L也使用该选项,则以bindkey命令的形式列出来创建或链接键映射。 ' bindkey -lL main' 显示哪个键映射链接到 ' main'(如果有),以及标准 emacs 或 vi 模拟是否有效。此选项不显示.safe键盘映射,因为它无法以这种方式创建;但是,“ ”也没有被bindkey -lL .safe报告为错误,它只是不输出任何内容。

因此,如果您执行 a,bindkey -lL您会看到(在正常情况下)其中一个键盘映射(通过bindkey -Amain是“当前”键盘映射的别名。

如果main键盘映射不存在,您将被放入.safe键盘映射中,这非常不友好,但功能足够好,可以让您修复问题。如果您遇到这种情况,bindkey -d应该重置您的键盘映射情况。

相关内容