Obsidian 批量命令快捷键实现
一种通过 js 脚本实现 Obsidian 支持批量命令绑定快捷键的方法
出于快速记录的需要,需要 Obsidian 支持一种能力:一个快捷键实现组合操作,例如 cmd(⌘) + shift(⇧) + u 实现激活弹窗(hover editor)操作然后打开 memos 记录窗口。
对这个能力进行一个抽象:实现 obsidian 支持批量命令绑定快捷键。
1. Obsidian 调试命令
以 ⌘ + ⇧ + u 实现打开弹窗然后打开 memos 操作为例,首先先看一下没有快捷键的时候是怎么实现的:
- ⌘ + p 打开 obsidian command palette,输入 open new hover editor 确认;
- ⌘ + p 打开 obsidian command palette,输入 open memos 确认;
根据上面的操作可以确认一点,obsidian 提供了我们需要 command,下面我们通过 Console 进行调试确认 command object 信息:
- 打开 Obsidian Console,⌥ + ⌘ + I
- 在 Console 中如输入调试代码:
app.commands.listCommands()
- 根据
listCommands()
打印的 command 信息确认 command ID:
{
"id": "obsidian-hover-editor:open-new-popover",
"name": "Hover Editor: Open new Hover Editor"
}
{
"id": "obsidian-memos:open-memos",
"name": "Obsidian Memos: Open Memos",
}
- 在 Console 中验证 command 是否可执行,执行如下命令:
app.commands.executeCommandById("obsidian-hover-editor:open-new-popover")
app.commands.executeCommandById("obsidian-memos:open-memos")
2. QuickAdd 命令脚本
根据 QuickAdd 的文档编写批量命令的 js 脚本,如下:
'use strict'
const OPTION_1 = "Message";
const OPTION_2 = "Type";
const OPTION_3 = "Debug";
const debug = (msg) => console.log(msg);
module.exports = {
entry: start,
settings: {
name: "Startup Memos Quickly for Noting",
options: {
[OPTION_1]: {
type: "text",
defaultValue: "quick memos in new pane",
},
[OPTION_2]: {
type: "text",
// show memo in popver pane if the value if "popover",
// and other values will be the default split display.
defaultValue: "popover",
},
[OPTION_3]: {
type: "toggle",
defaultValue: false,
},
},
},
};
async function start(params, settings) {
// debug logging
if (settings[OPTION_3]) {
debug(settings);
}
if (settings[OPTION_2] === "popover") {
await params.app.commands.executeCommandById("obsidian-memos:show-memos-in-popover");
} else {
await params.app.commands.executeCommandById("workspace:split-vertical");
await params.app.commands.executeCommandById("obsidian-memos:open-memos");
}
new Notice(settings[OPTION_1]);
}
3. 宏录制
- QuickAdd 宏管理器中增加宏(Macro Name 自定义即可)
- 配置 Macro 执行脚本,在 User Script 中选定 js 脚本文件
- 新建 Macro Choice 之后选择新建的宏
- 为 Macro Choice 增加快捷键,在 hotkey 中为 quickmemos command 绑定快捷键 ⌘ + ⇧ + u
Public discussion