了解当我使用 Ctrl-v 转储终端字符序列时会发生什么?

了解当我使用 Ctrl-v 转储终端字符序列时会发生什么?

如果我想将键映射绑定到 zsh 中的函数或小部件,我了解到我首先必须在提示符下按Ctrl+ -,然后输入我想要使用的键序列,然后在我的键绑定中使用输出v命令。
因此,例如,如果我想映射到在编辑器中打开当前命令行内容的操作,我需要Ctrl+xCtrl+v

  • Ctrl+ v- 进入“转储键模式”
  • Ctrl+xCtrl+v
    • 就我而言,这会产生^X^E
  • 获取^X^E并在我的键绑定命令中使用它,例如
bindkey "^X^E" edit-command-line

为什么这是必要的以及当我这样做时“幕后”实际发生了什么?

答案1

当您按Ctrl-时V,shell 将忽略键盘中断并简单地将按下的组合键作为输入字符来启动。这很容易实现,因为 ASCII 旨在保存所有控制字符。

当然,在显示时它必须稍微作弊并显示后面^跟着相应的键,否则它会输出控制字符而不是您需要看到的内容。

请注意,bindkey文档显示它支持两种控制字符表示法:(示例参考Ctrl- X

  • 脱字符号表示法,即显式写入脱字符号 ( ^),后跟相应的文本控制字符(本问题中不需要Ctrl-V方法);例子:^X
  • C-后跟控制字符;例子:C-x。这会导致某些组合键需要转义(即使您不使用它)。您可能应该阅读全文screenbindkey手册。

相关内容