6.4 KiB
在Obsidian中,右键菜单(上下文菜单)可以通过插件进行扩展。如果你想要在文本格式的右键菜单中添加自定义操作,你需要编写一个Obsidian插件。以下是一个简单的步骤指南,帮助你开始:
步骤1: 创建插件项目
-
打开Obsidian,进入设置 -> 社区插件 -> 浏览,然后搜索并安装“Obsidian Plugin DevTools”插件(如果尚未安装)。
-
使用该插件可以快速生成插件模板:在命令面板中运行“Create new plugin”命令。
步骤2: 理解插件结构
生成的插件项目包含以下关键文件:
-
main.ts: 插件的入口文件。 -
manifest.json: 插件的元数据,如ID、名称、版本等。
步骤3: 添加上下文菜单项
在main.ts中,你可以使用registerEvent来监听编辑器上下文菜单事件,并添加自定义菜单项。
以下是一个示例代码,展示如何在右键菜单中添加一个自定义菜单项:
import { App, Editor, Menu, Plugin, PluginManifest } from 'obsidian';
export default class MyPlugin extends Plugin {
constructor(app: App, manifest: PluginManifest) {
super(app, manifest);
}
async onload() {
// 注册编辑器上下文菜单
this.registerEvent(
this.app.workspace.on('editor-menu', (menu: Menu, editor: Editor, view: any) => {
// 添加一个菜单项
menu.addItem((item) => {
item
.setTitle("我的操作")
.setIcon("document") // 可选:设置图标
.onClick(async () => {
// 当点击菜单项时执行的操作
const selectedText = editor.getSelection();
// 示例:将选中的文本转换为大写
if (selectedText) {
editor.replaceSelection(selectedText.toUpperCase());
} else {
// 如果没有选中文本,可以在光标处插入文本
editor.replaceRange("Hello World!", editor.getCursor());
}
});
});
})
);
}
onunload() {
// 清理工作
}
}
步骤4: 测试插件
-
将你的插件文件夹放在
.obsidian/plugins/目录下(如果没有该目录,可以手动创建)。 -
在Obsidian的设置 -> 社区插件中,启用你的插件。
-
打开一个笔记,选中一些文本,然后右键单击,你应该能看到“我的操作”菜单项。点击它,选中的文本应该会变成大写。
步骤5: 完善功能
根据你的需求,你可以修改点击事件的处理逻辑。例如,你可以添加更复杂的文本操作,如插入特定格式的文本、调用外部API等。
步骤6: 发布插件(可选)
如果你希望分享你的插件,可以将其发布到Obsidian的社区插件市场。你需要将代码托管在GitHub上,并按照Obsidian的发布指南操作。
注意事项:
-
Obsidian的API可能会随着版本更新而变化,请关注官方文档:https://obsidian.md/developers
-
在编写插件时,请确保处理各种边界情况(如没有选中文本的情况)。
如果你需要更复杂的操作,比如添加多个菜单项,或者根据条件显示不同的菜单项,可以在editor-menu事件回调中添加多个menu.addItem调用,并在回调函数中编写相应的逻辑。
希望这能帮助你在Obsidian中添加自定义的右键菜单操作!
要在 Obsidian 的右键菜单中添加自定义文本操作,可以通过以下两种主要方法实现(推荐使用插件开发):
方法 1:使用现成插件(推荐新手)
安装以下社区插件可快速添加文本操作:
-
QuickAdd
- 创建自定义脚本/命令并绑定到右键菜单
-
cMenu
- 直接添加格式化按钮到右键菜单
-
Context Menu Extended
- 扩展右键菜单选项
操作步骤:
-
设置 → 社区插件 → 浏览 → 搜索插件名 → 安装并启用
-
根据插件文档配置自定义操作(如用 QuickAdd 添加脚本)
方法 2:开发自定义插件(高阶)
若需深度自定义,可创建自己的插件:
步骤 1:创建插件项目
-
安装 Obsidian Plugin DevTools
-
命令面板执行
> Create new plugin生成模板
步骤 2:修改代码(示例)
在 main.ts 中添加以下代码:
typescript
复制
下载
import { App, Editor, Menu, Plugin } from "obsidian";
export default class TextActionsPlugin extends Plugin { async onload() { // 注册右键菜单 this.registerEvent( this.app.workspace.on("editor-menu", (menu: Menu, editor: Editor) => { // 添加自定义操作 1 menu.addItem((item) => item .setTitle("转换为大写") .setIcon("uppercase") .onClick(() => { const sel = editor.getSelection(); editor.replaceSelection(sel.toUpperCase()); }) );
// 添加自定义操作 2
menu.addItem((item) =>
item
.setTitle("插入时间戳")
.setIcon("clock")
.onClick(() => {
const cursor = editor.getCursor();
editor.replaceRange(new Date().toLocaleString(), cursor);
})
);
})
);
} }
步骤 3:启用插件
-
将插件文件夹放入
.obsidian/plugins/ -
设置 → 社区插件 → 启用你的插件
效果:
右键文本时会出现新选项:
-
转换为大写:选中的文本变为大写
-
插入时间戳:在光标处插入当前时间
自定义操作示例(可扩展)
在插件代码中可添加更多操作:
typescript
复制
下载
// 添加删除线
menu.addItem((item) => item
.setTitle("添加删除线")
.onClick(() => {
const sel = editor.getSelection();
editor.replaceSelection(~~${sel}~~);
})
);
// 复制为Markdown链接
menu.addItem((item) => item
.setTitle("复制为链接")
.onClick(() => {
const sel = editor.getSelection();
navigator.clipboard.writeText([${sel}](https://));
})
);
调试提示
-
按
Ctrl/Cmd + Shift + I打开开发者工具 -
在控制台查看插件日志
-
修改代码后重新加载 Obsidian(
Ctrl/Cmd + R)
通过以上方法,你可以为 Obsidian 的右键菜单添加任意文本操作,从简单的格式转换到复杂的自定义逻辑均可实现。开发插件需要 TypeScript 基础,但 Obsidian 提供了完善的 API 文档 和社区支持。