跳转到内容

标准键位

框架保留一小组键,并给每个已挂载缓冲区一套导航键位;其余按键都是应用数据,通过 :keys 或会话 :keymap 声明。下表按情境列出标准键位。Host 声明的键会遮蔽挂载缓冲区内同键的绑定,框架键不能重绑,未绑定的键继续落到缓冲区其余按键表。

键 效果
Escape 关闭作用域链中最近的、启用且带 :on-dismiss 的 Host。
M-g 进入区域选择;选择器读取一个键。
C-g 保持 Emacs 原生的键盘退出;它从不关闭 Host。
? 为当前作用域打开只读的 *ETAF Help* 缓冲区。
TAB、S-TAB 向前或向后移动一个焦点停靠点。
方向键 运行 etaf-direction:最近的 :on-direction 处理器、separator 或 slider 步进、区域邻接、Ebox 空间移动,最后滚动一步视口。
Home、End 到达分组或作用域的第一个、最后一个焦点停靠点。

这些绑定来自 ebox-buffer-mode-map,即挂载画布的按键表。

键 效果
n、p 向下或向上滚动一行。
C-v、SPC、<next> 向下滚动一页;scroll-up-command 的重映射同样生效。
M-v、S-SPC、<prior> 向上滚动一页;scroll-down-command 的重映射同样生效。
滚轮事件 滚动画布;在 fringe 与 margin 里同样生效。
水平滚轮事件 横向滚动。
TAB、S-TAB 移动一个焦点停靠点。
RET、<return> 激活聚焦的控件。
方向键、C-n、C-p、C-b、C-f 用 ebox-focus-direction 移动焦点;该方向没有停靠点时改为滚动。
Home、M-< 到达分组或作用域的第一个焦点停靠点。
End、M-> 到达最后一个焦点停靠点。
q 退出窗口。
移动事件 通过 mouse-movement 派发悬停内容。
主按键按下与拖拽 移动 point;画布没有文本选区。
任何未绑定的打印键 被抑制,因此已挂载画布不会意外变成可编辑区。

选择器是 M-g 背后的模态单键交互;在一个键结束它之前一直打开。

键 效果
某个区域的提示键 聚焦该区域的有效入口。
方向键;vim 方案下的 h、j、k、l 朝该方向移动到相邻区域。
? 重复提示并给出说明。
Escape 取消,焦点保持不变。
C-g 像任何原生退出一样中止。
其他任意键 保持打开,并显示一条点名该键的提示。

会话编辑字段时,普通 Emacs 编辑命令作用于隐藏的值缓冲区;当会话 :keymap 绑定了 ebox-input-edit-commands 里的命令——newline、open-line、newline-and-indent、electric-newline-and-maybe-indent、completion-at-point、indent-for-tab-command 与 yank——这些命令编辑值。会话 :keymap 里的其他绑定在挂载缓冲区里运行,字段因此可以把 RET 绑成提交,而让 C-j 或 Shift-RET 插入换行。按下放置插入点,拖拽扩展选区;双击选中单词,三击选中整个值。

  • etaf-direction-scheme 取 arrows(默认)或 vim;vim 下这四个字母在导航状态下按方向键派发。用 etaf-set-direction-scheme 设置,它会在改方案之前报告 Host :keys 与区域提示键的冲突。
  • 命令面板刻意不占键:用 M-x etaf-palette 打开,运行带标签的命令或聚焦具名控件。
  • 原生输入会话编辑时,按键穿过框架层落到会话自己的编辑命令。