如果我想将键映射绑定到 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
。这会导致某些组合键需要转义(即使您不使用它)。您可能应该阅读全文screen
和bindkey
手册。