biji
This commit is contained in:
260
InBox/obsidian右键扩展.md
Normal file
260
InBox/obsidian右键扩展.md
Normal file
@@ -0,0 +1,260 @@
|
||||
在Obsidian中,右键菜单(上下文菜单)可以通过插件进行扩展。如果你想要在文本格式的右键菜单中添加自定义操作,你需要编写一个Obsidian插件。以下是一个简单的步骤指南,帮助你开始:
|
||||
|
||||
### 步骤1: 创建插件项目
|
||||
|
||||
1. 打开Obsidian,进入设置 -> 社区插件 -> 浏览,然后搜索并安装“Obsidian Plugin DevTools”插件(如果尚未安装)。
|
||||
|
||||
2. 使用该插件可以快速生成插件模板:在命令面板中运行“Create new plugin”命令。
|
||||
|
||||
### 步骤2: 理解插件结构
|
||||
|
||||
生成的插件项目包含以下关键文件:
|
||||
|
||||
- `main.ts`: 插件的入口文件。
|
||||
|
||||
- `manifest.json`: 插件的元数据,如ID、名称、版本等。
|
||||
|
||||
### 步骤3: 添加上下文菜单项
|
||||
|
||||
在`main.ts`中,你可以使用`registerEvent`来监听编辑器上下文菜单事件,并添加自定义菜单项。
|
||||
|
||||
以下是一个示例代码,展示如何在右键菜单中添加一个自定义菜单项:
|
||||
|
||||
```typescript
|
||||
|
||||
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: 测试插件
|
||||
|
||||
1. 将你的插件文件夹放在`.obsidian/plugins/`目录下(如果没有该目录,可以手动创建)。
|
||||
|
||||
2. 在Obsidian的设置 -> 社区插件中,启用你的插件。
|
||||
|
||||
3. 打开一个笔记,选中一些文本,然后右键单击,你应该能看到“我的操作”菜单项。点击它,选中的文本应该会变成大写。
|
||||
|
||||
### 步骤5: 完善功能
|
||||
|
||||
根据你的需求,你可以修改点击事件的处理逻辑。例如,你可以添加更复杂的文本操作,如插入特定格式的文本、调用外部API等。
|
||||
|
||||
### 步骤6: 发布插件(可选)
|
||||
|
||||
如果你希望分享你的插件,可以将其发布到Obsidian的社区插件市场。你需要将代码托管在GitHub上,并按照Obsidian的发布指南操作。
|
||||
|
||||
### 注意事项:
|
||||
|
||||
- Obsidian的API可能会随着版本更新而变化,请关注官方文档:https://obsidian.md/developers
|
||||
|
||||
- 在编写插件时,请确保处理各种边界情况(如没有选中文本的情况)。
|
||||
|
||||
如果你需要更复杂的操作,比如添加多个菜单项,或者根据条件显示不同的菜单项,可以在`editor-menu`事件回调中添加多个`menu.addItem`调用,并在回调函数中编写相应的逻辑。
|
||||
|
||||
希望这能帮助你在Obsidian中添加自定义的右键菜单操作!
|
||||
|
||||
要在 Obsidian 的右键菜单中添加自定义文本操作,可以通过以下两种主要方法实现(推荐使用插件开发):
|
||||
|
||||
---
|
||||
|
||||
### 方法 1:使用现成插件(推荐新手)
|
||||
|
||||
安装以下社区插件可快速添加文本操作:
|
||||
|
||||
1. **QuickAdd**
|
||||
|
||||
- 创建自定义脚本/命令并绑定到右键菜单
|
||||
|
||||
2. **cMenu**
|
||||
|
||||
- 直接添加格式化按钮到右键菜单
|
||||
|
||||
3. **Context Menu Extended**
|
||||
|
||||
- 扩展右键菜单选项
|
||||
|
||||
|
||||
**操作步骤**:
|
||||
|
||||
1. 设置 → 社区插件 → 浏览 → 搜索插件名 → 安装并启用
|
||||
|
||||
2. 根据插件文档配置自定义操作(如用 QuickAdd 添加脚本)
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 方法 2:开发自定义插件(高阶)
|
||||
|
||||
若需深度自定义,可创建自己的插件:
|
||||
|
||||
#### 步骤 1:创建插件项目
|
||||
|
||||
1. 安装 **Obsidian Plugin DevTools**
|
||||
|
||||
2. 命令面板执行 `> 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:启用插件
|
||||
|
||||
1. 将插件文件夹放入 `.obsidian/plugins/`
|
||||
|
||||
2. 设置 → 社区插件 → 启用你的插件
|
||||
|
||||
|
||||
#### 效果:
|
||||
|
||||
右键文本时会出现新选项:
|
||||
|
||||
- **转换为大写**:选中的文本变为大写
|
||||
|
||||
- **插入时间戳**:在光标处插入当前时间
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 自定义操作示例(可扩展)
|
||||
|
||||
在插件代码中可添加更多操作:
|
||||
|
||||
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://)`);
|
||||
})
|
||||
);
|
||||
|
||||
---
|
||||
|
||||
### 调试提示
|
||||
|
||||
1. 按 `Ctrl/Cmd + Shift + I` 打开开发者工具
|
||||
|
||||
2. 在控制台查看插件日志
|
||||
|
||||
3. 修改代码后重新加载 Obsidian(`Ctrl/Cmd + R`)
|
||||
|
||||
|
||||
通过以上方法,你可以为 Obsidian 的右键菜单添加任意文本操作,从简单的格式转换到复杂的自定义逻辑均可实现。开发插件需要 TypeScript 基础,但 Obsidian 提供了完善的 [API 文档](https://docs.obsidian.md/Reference/TypeScript+API/Editor) 和社区支持。
|
||||
Reference in New Issue
Block a user