yaml-bulk-edit😄(批量、表格编辑YAML)

此插件涉及到批量修改文档内容,所以使用前请进行数据备份!!使用此插件导致的任何数据丢失本人概不负责。

请在使用前备份数据!!

请在使用前备份数据!!

请在使用前备份数据!!

当您误操作数据后,请使用命令YAML属性批量管理: 还原上一步操作来还原操作。

目录

obsidian-yaml-bulk-edit 批量编辑yaml

此插件涉及到批量修改文档内容,所以使用前请进行数据备份!!使用此插件导致的任何数据丢失本人概不负责。

请在使用前备份数据!!

请在使用前备份数据!!

请在使用前备份数据!!

当您误操作数据后,请使用命令YAML属性批量管理: 还原上一步操作来还原操作。

此插件适用的人群:

  • 使用obsidian并懂得yaml的用户
  • 想体验类似于notion的database的用户(当然差很远的了:smile:

若您想要使用本插件,强烈推荐您阅读本插件的筛选条件说明,阅读这个有利于您采取合理的措施以使得该插件和文件配合。

若您在0.1.1之前使用过当前插件,则需要按照说明对设置项进行修改。

我不太会CSS,表格样式的代码是QQ群的Cuman老哥按我的要求帮忙提供的,感谢!!

插件的Github链接:GitHub - 1657744680/obsidian-yaml-bulk-edit: 批量选择编辑obsidian中文档的yaml

插件视频演示:yaml-bulk-edit:批量编辑或表格编辑yaml(按钮可视化操作)_哔哩哔哩_bilibili

这个插件是即可以批量编辑obsidian中文档的yaml,也可以像notion那样表格编辑的形式来编辑某个文档的某个yaml。

安装

手动从release页面下载安装,或使用Brat进行安装

使用方法

您有两种方式操作yaml

  1. 命令:面板批量更改YAML
    (包括增删改属性名、改属性值、删除YAML、清理空值一系列批量操作)
    1. 输入条件筛选文档
    2. 确认筛选的文档和自己想要修改的目标文档一致
    3. 选择操作
    4. 输入参数
    5. 修改完成
  2. 命令:还原上一步操作
    (可以还原上一步对yaml进行的操作,可以还原批量操作和表格操作,但是操作只会被记录50条)
  3. 代码块:表格编辑YAML
    (编辑某个文档的某个属性值
    1. 点击刷新重新读取缓存刷新表格
    2. 点击搜索对当前表格内容进行搜索
    3. 点击属性指定显示的属性及顺序,还可以指定属性的名称和数据类型
    4. 点击↑↓设置排序条件,支持多条件排序,排序优先级即为条件的顺序
    5. 点击筛选筛选文档
    6. 点击表格单元格来改变某个文档的某个属性值
    7. 其它注意事项详见(高级操作) yamledit 代码块

面板批量更改YAML

面板①②③长度过长时均可以上下滑动

  1. Ctrl+P调出命令面板,选择命令YAML属性批量管理: 打开操作面板

  2. 点击命令后进入面板①,在这里输入条件以筛选文档,可以添加新的条件(注意:各个条件之间为与关系),输入完成后确定。目前支持以下几种条件:

    1. yaml——包含/不包含——属性名
    2. yaml属性——属性名——属性值
    3. 标签——包含/不包含——标签名
    4. 文件名称——符合/不符合——正则表达式
    5. 文件路径——符合/不符合——正则表达式
  3. 点击确定后进入到面板②,这里会展示筛选的文档,当您确认文档符合要求后可选择具体操作进行下一步(如果发现显示的文档并不符合您的预期要求,那么您可以进一步选择或者关闭当前面板回到面板①重新设置条件)。可选择的操作有:

    1. 添加新属性
    2. 修改属性名
    3. 修改属性值
    4. 删除属性
    5. 删除整个YAML
    6. 清理控制属性(可能需要多点几下)
  4. 点击具体操作后进入到面板③,在这里输入值来进行最后一步的操作。请谨慎操作!!确认输入无误后点击确定即可提交。当您误操作数据后,请使用命令YAML属性批量管理: 还原上一步操作来还原操作。

  5. 到这里就完成批量修改操作了。

  6. 您可以使用命令还原上一步操作来还原批量操作

  7. 批量编辑设置项

    1. 禁止删除和修改的名称属性:对于十分重要的yaml属性值,为了避免对这些重要的属性值造成误删、误改,可以将他们添加到此。(一行一个属性,多个属性请换行)
    2. 忽略的文件或文件夹路径:输入基于库的路径,路径开头不要加/,(一行一个路径,多个路径请换行)

yaml 表格操作

创建表格

您必须在代码块中以下面的形式填写id!!!
若您未填写,那么表格将不会被渲染。

```yamledit
id:在这里填写一个在当前页面所有的yamledit代码块中独一无二id值
```

操作区域

操作区域是指表格的按钮、搜索部分,包括以下内容:

  • 刷新(点击重新读取缓存渲染表格)

  • 搜索(只会对当前表格显示的内容进行搜索,对于checkbox类型的属性需要输入true或false来搜索)

  • 属性(属性批量操作面板、属性显示控制、属性名称控制)目前支持的类型如下:

    • text(默认类型,可显示所有类型的值)
    • checkbox(选框)
    • date(日期)
    • time(时间)
    • number(数字)
    • img(仅支持在线图片)
    • url
  • 排序 ↑↓(按照指定的排序条件进行排序,支持多条件排序,支持对文件和各属性按asc或desc排序)

  • 筛选(和批量操作筛选文档的条件相同)


后面3个按钮的进一步说明:

  • 点击属性后出现的操作区域中的批量操作属性会对当前表格内的文档进行批量操作。
  • 排序 ↑↓的优先级是您输入参数的顺序
  • 输入参数后需要点击确定才会发生更改,点击取消编辑即可取消更改。若表格未刷新,可自行点击按钮刷新。
  • 这3个按钮都是支持多个参数的输入和删除。

表格区域

在此处直接编辑文档的属性值即可。

部分类型的输入框可能需要您点击一下除该输入框的其它位置,使输入框失焦才能够触发更改。

其它的注意事项:

  1. 当您在点击属性按钮并指定某个属性的类型时,若您筛选的文档中的某个文档的该属性值不符合您指定的类型,那么对应单元格的值可能不会显示,而当您点击该单元格时,新值将会覆盖旧值!!
  2. 当您操作表格的某个单元格且输入改变值时,若该单元格所对应的文档没有该单元格所对应的属性,那么插件会自动为该文档新建该属性
  3. 对于多行的yaml属性,当您对它编辑并赋值时,插件会将文档中的它从多行变成单行,但这并不会有什么其它的影响。

目前prop中的type.支持以下几种属性类型:

注意事项

  1. 若您在prop中指定属性,请注意只有您指定且筛选的文档中含有的属性才会被显示
  2. 对于prop属性指定其type.类型时,若您筛选的文档中的某个文档的该属性值不符合您指定的类型,那么对应单元格的值可能不会显示,而当您点击该单元格时,新值将会覆盖旧值!!
  3. 当您操作表格的某个单元格且输入改变值时,若该单元格所对应的文档没有该单元格所对应的属性,那么插件会自动为该文档新建该属性

相关设置项

  1. 隐藏的属性名称,在这里输入您想要默认隐藏的属性。(一行一个属性,多个属性请换行)(如果您在代码块中prop:输入的要显示的属性中包含表格中隐藏的属性,那么该属性仍会被显示。换句话说,这个选项只在你的代码块中没有prop:参数时起作用)

筛选条件说明

每个条件之间是与关系。

参数1 参数2 参数3 说明
yaml 包含
不包含
属性名 yaml包含/不包含 属性名的文档
yaml属性 属性名 属性值 yaml属性属性名值为属性值的文档
标签 包含
不包含
标签名(不带#号) 包含/不包含 标签名的文档
文件名称 符合
不符合
正则表达式 文件名称 符合/不符合 正则表达式 的文档
文件路径 符合
不符合
正则表达式 文件路径 符合/不符合 正则表达式 的文档

未来规划

表格编辑

批量编辑

  • [ ] 把涉及的笔记与Yaml属性做到一个二维表格里,用复选框或有无来增减属性值
  • [ ] 设置项里增加对所有已存在的yaml表格的显示(包括文档路径、代码块参数)

版本更新日志

0.5.0

修复

  • [x] 修复了表格操作筛选文档时属性值中含英文冒号解析条件出错的bug
  • [x] 修复了yaml中含有一些特殊符号时的错误,解决措施:插件会自动为对yaml赋值的属性添加英文半角单引号,同时会将您输入的值中的英文半角单引号强制转为英文半角双引号

增强

  • [x] 还原上一步操作(最多纪录50条操作数据,包括批量操作、表格编辑)
  • [x] 增加了对多行属性的编辑方法,目前的方法是删除多行属性值写到单行属性中去
  • [x] 为表格增加按键操作
    • [x] 刷新(点击重新读取缓存渲染表格)
    • [x] 搜索(只会对当前表格显示的内容进行搜索,对于checkbox类型的属性需要输入true或false来搜索)
    • [x] 属性(属性批量操作面板、属性显示控制、属性名称控制)
    • [x] 排序↑↓(按照指定的排序条件进行排序,支持多条件排序,支持对文件和各属性按asc或desc排序)
    • [x] 筛选(和批量操作筛选文档的条件相同)
  • [x] 像notion那样,表格的属性是有类型的(注意,若您的属性值不符合您指定的属性类型,那么该值可能不会被显示!text类型可显示所有属性值)目前支持以下类型:
    • [x] text(默认)
    • [x] checkbox
    • [x] date
    • [x] time
    • [x] number
    • [x] img(仅支持在线图片)
    • [x] url
  • [x] table中的td显示和input分开以更好的支持多类型数据

0.2.0

修复

  • [x] 表格CSS与第三方主题冲突的问题 #2

增强

  • [x] 去除表格编辑YAML时的文件名称的.md后缀
  • [x] 支持多条件排序!

0.1.1

修复

  • [x] 修复不识别yaml中tags、tag的bug

增强

  • [x] 将设置项中的禁止删除和修改选项分为2项:①禁止批量操作的属性、②禁止表格操作的属性
  • [x] 设置中的操作项均由text改为textarea以方便编写

0.1.0

增强

0.0.3

增强

  • [x] 支持筛选文档后进一步选择目标文档
  • [x] 设置项中添加选项:忽略文件夹

0.0.2

修复

  • [x] 修复yaml属性选择属性后搜索选框不显示全部已存在的属性值的问题
  • [x] 修复未选择添加功能时自动添加---的问题

增强

  • [x] 为面板③修改删除、修改属性操作的第一个输入框增加候选项
  • [x] 面板②增加操作:删除整个yaml

0.0.1

视频演示:obsidian批量修改文档yaml属性插件演示

13 个赞

你好,我尝试用 obsidian 42 BRAT 安装插件,提示 main.js 缺失

这个我也不知道为什么?我在release页面已经放了main.js文件

大佬,今天使用的时候发现这个插件会在我没有yaml区的文件写入yaml区的—

Github上已经有人提了这个了,这个是我设计的逻辑问题,我今天下午改下:smiley:

1 个赞

好的!那方便加一个删除不必要的yaml区功能么?:grin:忘了备份了……不过到是也不大影响。要是麻烦的话也无所谓啦。

可以考虑添加,实现起来应该不难:grin:
使用时请务必先进行备份!!

麻烦大佬啦!我下次会先备份再尝试的:smile:

膜拜!期待大佬有空能开个帖子讲讲如何开发插件

以前已经写过一个开发插件的简单教程了:看板MOC:我开发的第一个插件😁(附插件开发教程)

但是如果想更进一步的开发插件就需要自己去学习一些html和JavaScript的知识了,也可以下载别人的插件看别人的实现方法。

1 个赞

感谢,有空好好研究下

大佬,已经食用,目前非常完美:+1:

已经更新了表格编辑yaml,欢迎体验和反馈。注意设置项可能需要按说明更改下

希望能支持本地图片或gif格式的支持。不知道会不会比较困难。还有不知道值不支持css美化。

建议去github上提需求或者bug,我一般都是看github的issue来写代码