鍵盤快速鍵

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 編輯此頁