前言
Hunea 内置了一些 斜杠菜单。在输入框为空时输入 /,就会弹出菜单项,效果如下:

说明:
/内联斜杠菜单当前只支持输入框为空时触发;输入框里已有内容时,键入/不会打开这份菜单。后续可能会进行优化。
然后可以用键盘上下方向键移动,或者继续键入来过滤/匹配想要的菜单项,选中后按 Enter,即可触发对应功能。
打开菜单的两种方式
从 0.12.1-alpha.2 起,命令菜单的触发方式可以通过 [tui] 段下的 command_menu_mode 配置,共三档:
/内联菜单:即上面介绍的默认方式,仅在输入框为空时以/开头触发。Ctrl+O悬浮菜单:不依赖输入框是否为空,随时可用Ctrl+O唤出。悬浮菜单支持上下滚动,命令较多时浮窗右侧会显示滚动条;一次显示的行数由command_menu_rows控制(范围7..21,默认7)。适合希望把/当作普通字符输入、或更习惯用固定快捷键唤出命令的场景。
Ctrl+O 悬浮菜单的交互方式
悬浮菜单除了键盘操作,还支持鼠标点击与滚动:
- 键盘:
↑/↓上下移动选中项(列表超出可见区域时会自动滚动跟随),继续键入进行过滤/匹配,Enter触发选中命令,Esc关闭菜单。 - 鼠标点击:直接单击某一行命令即可选中并触发该命令,不需先用方向键移动。
- 鼠标滚轮:当命令数量超过
command_menu_rows设定的行数时,可直接在浮窗上滚动鼠标滚轮来上下翻看;浮窗右侧的滚动条会反映当前所处的位置。
Ctrl+O 悬浮菜单的效果如下:

两种菜单的项目、过滤与选中方式一致,只是触发入口不同。配置方式与取值范围见 config.toml · command_menu_mode,按键说明见快捷键一览。
当前 Hunea 内置的斜杠菜单如下(点击 命令 列可跳转到对应文档):
补充说明
/tree与/sends-back:二者不会同时出现在菜单中,并且与空输入框连按两次Esc的行为是配合使用的,而不是重复提供同一入口。默认esc_rewind_mode = "coarse"时:菜单显示/tree;空输入框连按两次Esc会进入「按某轮用户消息编辑/重发」的交互(截断该条之后的内容,并将正文回填到输入框,与/sends-back相同)。若将配置改为esc_rewind_mode = "entry"(位于[tui]节下):菜单改为显示/sends-back,连按两次Esc则打开/tree。也就是说,菜单项与双击Esc分别对应两种回溯方式,修改配置只是交换快捷键入口与菜单入口。我把它们拆开,是为了各自对应更合适的使用场景,而不是合并成同一个命令。/tool-debug:仅在开启 debug 命令时出现,用于预览 tool approval 面板,不属于常规用户命令,所以不放进上表。后续也可能会移除,或者继续完善。- 别名:输入补全时,
/quit会落到/exit;同理/new会落到/clear。这样做是为了方便从其他 CLI 产品过渡到 Hunea,这两个命令很常用,我自己在不同 CLI 之间切换时总被名字卡一下手,所以在 Hunea 里做了别名。后续可能会放开别名自定义,甚至考虑“宏”(一个命令串起多个动作)不过这个更偏扩展场景了,等到时候再考虑一下如何设计了。