键盘快捷键

useKeymap、按键序列、? 帮助叠层、按键提示和命令面板。

用 useKeymap 声明一次快捷键。Text.js 负责路由这些快捷键,在 ? 浮层中列出,在页脚中显示,并支持在命令面板中搜索。

实时80×18 · booting Turbolog…tsx
preview://keymap:1
useKeymap(  {    "j, down": { label: "Next", run: next, hint: true },    "k, up": { label: "Previous", run: previous },    "g g": { label: "Go to top", run: top },    "ctrl+s": { label: "Save", run: save, hint: true },  },  { group: "Navigation" },);return (  <>    <StatusBar right={<Text color="subtle">main</Text>}>      <KeyHints />    </StatusBar>    <CommandPalette commands={commands} />    <KeyHelp />  </>);

useKeymap

语法含义
ctrl+k修饰键:ctrl alt shift meta mod
mod+k⌘ 或 Ctrl,取决于按住哪一个
j, down可选按键
g g按键序列(按键间隔为 1 秒)
G大写隐含 Shift
?可打印按键按字符匹配

值可以是处理函数,也可以是带有 label、group、hint、disabled 和 noRepeat 的绑定。没有标签的绑定仍然生效,但不会显示在帮助浮层中。

useKeymapBindings() 返回当前生效且带有标签的绑定,供你在自定义页脚和菜单中使用。

按键映射通过 useInput 运行,因此遵循常规规则:获得焦点的输入框优先,匹配的按键会停止传播,打开的 <Modal> 会禁用其外部的绑定。传入 { priority, global, isActive } 可更改这些行为。

<KeyHelp>

按 ? 可按分组查看所有带标签的绑定。列表显示浮层打开位置当前生效的绑定。

<KeyHelp keys="?" title="Keyboard shortcuts" />

<KeyHints> 和 <StatusBar>

<KeyHints /> 显示标记为 hint: true 的绑定,或显式指定的 items。<StatusBar> 是带有 right 插槽的单行页脚。

<StatusBar right={<Text color="subtle">▼ iad1</Text>}>  <KeyHints items={[{ keys: "ctrl+k", label: "commands" }]} /></StatusBar>

<Kbd>mod+k</Kbd> 渲染单个按键。formatKeys("ctrl+shift+p") 在 macOS 上返回 ⌃⇧P,在其他平台上返回 ctrl+shift+P。

<CommandPalette>

Ctrl+K(或 Ctrl+P)打开支持模糊搜索的启动器,涵盖你的命令和所有带标签的绑定,并高亮匹配的字母。

<CommandPalette  commands={[{ id: "theme", label: "Toggle theme", group: "View", run: toggleTheme }]}/>
Prop说明
commands{ id, label, group?, keys?, keywords?, run }[]
keys打开快捷键(默认为 ctrl+k, ctrl+p;设为 null 可禁用)
includeKeymap列出按键映射绑定(默认为 true)
open / onOpenChange受控状态

命令面板会在执行命令前关闭,因此命令可以打开自己的模态框。fuzzyMatch 和 fuzzyFilter 均已导出,可用于你自己的列表。

在 GitHub 上编辑此页