Obsidian 插件:Slash Menu——写作时输入 / 就好
Obsidian 插件:Slash Menu——写作时输入 / 就好
一个写作向的 Obsidian 斜杠命令插件:输入 / 或 、 弹出命令卡片,插入标题、表格、代码块、Callout,支持拼音搜索,代码块内自动屏蔽,心流不断。
现在我在 Obsidian 里写文章,想插个表格就敲
/table,想插标题就敲/h2,手从头到尾不用离开键盘。
前言
写文章的时候最烦什么?对我来说是打断心流。
正写到一半,要插一个标题、一个表格、一段代码块,就得停下来动鼠标、找工具栏、点按钮、选格式……再回来,思路已经飘了。
其实很多编辑器早就解决了这个问题:思源笔记、Notion 都有「斜杠命令」——输入 /,弹出一个菜单,直接选。Obsidian 原生没有这个功能,于是我自己写了一个——Slash Menu。
它做了什么
一句话:在 Obsidian 里输入 /(中文输入法下按同一个键打出的是 、,也能触发),弹出可搜索的命令卡片,回车即插入。
20 个命令,分三组:
| 分组 | 命令 |
|---|---|
| 标题 | H1 ~ H6 |
| 块 | 表格(3×2)、代码块、引用、Callout、无序列表、有序列表、任务列表、分割线 |
| 内联格式 | 链接、图片、加粗、斜体、行内代码、删除线 |
插入后光标会自动落在最该输入的地方:表格在第一格,代码块在中间空行,链接在 URL 处(粘贴即用),加粗在 ** 中间。不用再手动挪光标。
细节决定体验
1. 拼音都能搜
菜单实时过滤,搜索词覆盖了中文、英文、拼音全拼和首字母缩写——这是从思源笔记学的:
- 输
h2、二级标题、erjibiaoti、ejbt,都能找到二级标题
中文输入法打拼音的人(比如我)用缩写找命令是真的快。
2. 该安静的时候绝不打扰
代码块、行内代码里输入 / 不会触发菜单——写代码的时候不会被弹窗打断,这是用 CodeMirror 6 语法树判断的,不是简单看行首有没有三个反引号。
3. 行内任意位置可唤起
不用特意回行首:当前行最后一个词是 /xxx 就能唤起,行中已有文字不会误触。Esc、左右方向键、删光触发词都会自动关闭菜单,不会赖着不走。
4. 标题替换不叠前缀
在 ## 旧标题 这一行选「标题 1」,会直接变成 # 旧标题,而不是叠出 ## # 旧标题 这种怪东西。
安装
目前是个人维护的小工具,还没上 Obsidian 社区插件市场,手动装也就三步:
- 从 GitHub 仓库 获取
main.js、manifest.json、styles.css - 拷贝到库目录
.obsidian/plugins/slash-menu/ - 重启 Obsidian(或「重新加载应用」),在「设置 → 第三方插件」里启用
开发背后的故事
这个插件的灵感来自思源笔记的斜杠菜单。看了思源的源码,它用的是自己画的浮层:keydown 监听 / 键、手写绝对定位、自己做上下键导航、还要专门处理中文输入法的组合态(Process/229)……光「什么时候关闭」就有一堆边角情况。
给 Obsidian 做的时候,我换了一条更稳的路:用官方 EditorSuggest API 当骨架——浮层跟随光标、上下键选择、回车确认、Esc 关闭全部由 Obsidian 内置,我只需要实现「触发检测、过滤、渲染、插入」四件事,出 bug 的面一下子就小了很多。
代码层面值得一提的:
- 纯逻辑层(触发检测、过滤、插入模板)和 Obsidian API 完全解耦,27 个单元测试,跑测试不需要 Obsidian
- 插入模板统一用 NUL 字符标记光标落点,20 个命令共用一个「插入 + 定位」执行器,没有为每个命令各写一套插入代码
- 插入执行全程 try-catch,出问题会弹提示而不是静默失败
开发中还修过一个隐蔽 bug:构建脚本的拷贝列表漏了 styles.css,功能全正常但样式不生效——「看着能跑、用着别扭」的那种问题。所以现在构建拷贝清单和验收清单都写进了仓库的开发规范里。
最后
仓库地址:github.com/tianshihao2003/obsidian-slash-menu
如果你也烦「写个字还要动鼠标」,欢迎试试,也欢迎提 issue 反馈想法。
毕竟,写文章的时间应该花在内容上,而不是花在找按钮上。
评论区
如果你喜欢,那么欢迎来到我的世界!
了解更多












