目 录CONTENT

文章目录

1.3.1.[Obsidian][插件][编辑器]编辑器

克林空间
2024-01-30 / 0 评论 / 0 点赞 / 73 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-01-30,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

编辑器类提供了在编辑模式下读取和操作活动 Markdown 文档的操作。

如果要在命令中访问编辑器,请使用 editorCallback

如果您想在其他地方使用编辑器,可以从活动视图中访问它:

const view = this.app.workspace.getActiveViewOfType(MarkdownView);

// Make sure the user is editing a Markdown file.
if (view) {
	const cursor = view.editor.getCursor();

	// ...
}

[!tip]

Obsidian使用 CodeMirror (CM) 作为底层的文本编辑器。并且将CodeMirror作为API的一部分开放出来。 Editor 作为一个抽象层,在 CM6 和 CM5(传统编辑器,仅在桌面上可用)间进行了桥接。通过使用 Editor 而不是直接访问 CodeMirror 实例,可以确保您的插件在两个平台上都能运行。

在光标位置插入文本

 replaceRange() 方法会替换两个光标位置之间的文本。如果只给它一个位置,它会在该位置插入新文本。

以下例子将会在光标位置插入今天的日期:

import { Editor, moment, Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  async onload() {
    this.addCommand({
      id: "insert-todays-date",
      name: "Insert today's date",
      editorCallback: (editor: Editor) => {
        editor.replaceRange(
          moment().format("YYYY-MM-DD"),
          editor.getCursor()
        );
      },
    });
  }
}

dl1hw

替换当前选择

如果要修改选中的文本,请使用  replaceSelection() 将当前选中的文本替换为新文本。

下面的例子将读取当前的选区并将其转换为大写:

import { Editor, Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  async onload() {
    this.addCommand({
      id: "convert-to-uppercase",
      name: "Convert to uppercase",
      editorCallback: (editor: Editor) => {
        const selection = editor.getSelection();
        editor.replaceSelection(selection.toUpperCase());
      },
    });
  }
}

5xtta

0

评论区