/obsidian-yaml-bulk-edit

批量选择编辑obsidian中文档的yaml

Primary LanguageTypeScript

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

请在使用前备份数据!!

请在使用前备份数据!!

请在使用前备份数据!!

目录

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

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

请在使用前备份数据!!

请在使用前备份数据!!

请在使用前备份数据!!

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

本插件仅支持对YAML中的单行属性进行操作,如果您的某个yaml属性并不是单行,那么请注意使用此插件可能会导致数据出现问题。

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

  • 批量编辑YAML:image
  • 表格编辑YAML:20220329_193316 mp4_20220330_085632

插件的Github链接:https://github.com/1657744680/obsidian-yaml-bulk-edit 新版本(包括表格编辑YAML功能)功能演示视频:obsidian批量修改文档yaml属性插件新版本演示(表格编辑YAML!!) 最初版本的视频演示:obsidian批量修改文档yaml属性插件演示

安装

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

使用方法

您有两种方式操作yaml

  1. 面板批量更改YAML (包括增删改属性名、改属性值、删除YAML、清理空值一系列批量操作)

    1. 输入条件筛选文档
    2. 确认筛选的文档和自己想要修改的目标文档一致
    3. 选择操作
    4. 输入参数
    5. 修改完成
  2. 表格编辑YAML (编辑某个文档的某个属性值

    1. 点击筛选筛选文档
    2. 点击属性指定显示的属性及顺序,还可以指定属性的名称和数据类型
    3. 点击↑↓设置排序条件,支持多条件排序,排序优先级即为条件的顺序
    4. 点击搜索对当前表格内容进行搜索
    5. 点击刷新重新读取缓存刷新表格
    6. 点击表格单元格来改变某个文档的某个属性值
    7. 其它注意事项详见(高级操作) yamledit 代码块

面板批量更改YAML

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

  1. Ctrl+P调出命令面板,选择命令YAML属性批量管理: 打开操作面板
  2. 点击命令后进入面板①,在这里输入条件以筛选文档,可以添加新的条件(注意:各个条件之间为与关系),输入完成后确定。目前支持以下几种条件:
    1. yaml——包含/不包含——属性名
    2. yaml属性——属性名——属性值
    3. 标签——包含/不包含——标签名
    4. 文件名称——符合/不符合——正则表达式
    5. 文件路径——符合/不符合——正则表达式
    image
  3. 点击确定后进入到面板②,这里会展示筛选的文档,当您确认文档符合要求后可选择具体操作进行下一步(如果发现显示的文档并不符合您的预期要求,那么您可以进一步选择或者关闭当前面板回到面板①重新设置条件)。可选择的操作有:
    1. 添加新属性
    2. 修改属性名
    3. 修改属性值
    4. 删除属性
    5. 删除整个YAML
    6. 清理控制属性(肯需要多点几下)
    image
  4. 点击具体操作后进入到面板③,在这里输入值来进行最后一步的操作。请谨慎操作!!确认输入无误后点击确定即可提交。

image

5. 到这里就完成批量修改操作了。 6. 批量编辑设置项 1. `禁止删除和修改的名称属性`:对于十分重要的yaml属性值,为了避免对这些重要的属性值造成误删、误改,可以将他们添加到此。(一行一个属性,多个属性请换行)

image

2. `忽略的文件或文件夹路径`:输入基于库的路径,路径开头不要加`/`,(一行一个路径,多个路径请换行)

image

yaml 表格操作

创建表格

操作区域

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

  • 刷新(点击重新读取缓存渲染表格)
  • 搜索(只会对当前表格显示的内容进行搜索,对于checkbox类型的属性需要输入true或false来搜索)
  • 属性(属性批量操作面板、属性显示控制、属性名称控制)
  • 排序 ↑↓(按照指定的排序条件进行排序,支持多条件排序,支持对文件和各属性按asc或desc排序)
  • 筛选(和批量操作筛选文档的条件相同)

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

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

表格区域

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

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

(高级操作) yamledit 代码块

预览图:20220329_193316 mp4_20220330_085632

新版本(包括表格编辑YAML功能)功能演示视频:obsidian批量修改文档yaml属性插件新版本演示(表格编辑YAML!!)

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

语法

```yamledit
id:id值
prop:属性1,属性2:name.属性2显示名称,属性3:type.属性3类型,属性4:name.属性4显示名称:type.属性4类型……
sort:属性1:desc/asc,属性2:desc/asc,……
条件1
条件2
……
```

(示例见代码示例

参数说明

可以看到yamledit代码块种一共是有3种数据:

基础操作 高级操作
id
(必选)
您需要为当前yaml表格输入一个id以使表格编辑正常运行。
id:xxxxxxxxxx只要这个id不和当前文档内的其它yamledit的id相同即可
prop(可选) 指定要显示的属性,属性与属性之间使用英文半角逗号,隔开。例如显示属性A,B
prop:A,B
一个代码块种只允许存在一个prop
(指定type.类型时请谨慎操作!详见注意事项)
①指定属性A显示为名称b
prop:A:name.b
②指定属性A的数据类型为c
prop:A:type.c
③指定属性A显示为名称a,且数据类型为c
prop:A:name.b:type.c
sort(可选) 指定排序方式,多个排序之间使用英文半角逗号,隔开。例如按属性A升序排序:
sort:A
一个代码块种只允许存在一个sort
①按属性A降序、B升序排序
sort:A:desc,B:asc
②按文件名称降序排序
sort:文件:desc
条件(可选) 筛选文档以显示(若不输入该参数则默认显示全部文档)。筛选条件详见筛选条件说明
一个筛选条件占一行,想添加新的筛选条件换行即可

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

  • text(默认类型,可显示所有类型的值)
  • checkbox(选框)
  • date(日期)
  • time(时间)
  • number(数字)
  • img(仅支持在线图片)

注意事项

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

相关设置项

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

代码示例

1、没有筛选条件

  1. 默认显示全部文档
  2. 显示除默认隐藏属性外的所有属性
```yamledit
id:y87y12wyhq8wdh
```

2、一个筛选条件

  1. 显示除默认隐藏属性外的所有属性
```yamledit
id:y87y12wyhq8wdh
yaml:包含:导演
```

3、两个筛选条件

  1. 显示除默认隐藏属性外的所有属性
```yamledit
id:y87y12wyhq8wdh
文件路径:符合:电影/
yaml:包含:导演
```

4、选择显示的属性

  1. 按顺序显示prop属性且选中文档里存在的属性
```yamledit
id:y87y12wyhq8wdh
prop:国家,演员
文件路径:符合:电影/
yaml:包含:导演
```

5、增加排序条件

在示例4的基础上增加排序sort:国家:esc,演员:asc,排序条件的顺序就是它的优先级,这里国家:desc的优先级就要比演员:asc的优先级高。

```yamledit
id:y87y12wyhq8wdh
sort:国家:desc,演员:asc
prop:国家,演员
文件路径:符合:电影/
yaml:包含:导演
```

6、更改属性的显示名称

在示例4的基础上更改,现在将演员属性显示为actor

```yamledit
id:y87y12wyhq8wdh
prop:国家,演员:name.actor
文件路径:符合:电影/
yaml:包含:导演
```

7、指定属性的类型

在示例6的基础上更改,想在指定演员的数据类型为text(实际上默认就是text类型)

```yamledit
id:y87y12wyhq8wdh
prop:国家,演员:name.actor
文件路径:符合:电影/
yaml:包含:导演
```

筛选条件说明

每个条件之间是与关系。

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

未来规划

表格编辑

批量编辑

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

版本更新日志

0.3.0

修复

  • 修复了表格操作筛选文档时属性值中含英文冒号解析条件出错的bug

增强

  • 为表格增加按键操作
    • 刷新(点击重新读取缓存渲染表格)
    • 搜索(只会对当前表格显示的内容进行搜索,对于checkbox类型的属性需要输入true或false来搜索)
    • 属性(属性批量操作面板、属性显示控制、属性名称控制)
    • 排序↑↓(按照指定的排序条件进行排序,支持多条件排序,支持对文件和各属性按asc或desc排序)
    • 筛选(和批量操作筛选文档的条件相同)
  • 像notion那样,表格的属性是有类型的(注意,若您的属性值不符合您指定的属性类型,那么该值可能不会被显示!text类型可显示所有属性值)目前支持以下类型:
    • text(默认)
    • checkbox
    • date
    • time
    • number
    • img(仅支持在线图片)

0.2.0

修复

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

增强

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

0.1.1

修复

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

增强

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

0.1.0

增强

  • 支持代码块渲染为列表来编辑YAML
  • 设置项中添加选项:表格中隐藏的属性名称
  • 面板②增加操作:清理空值属性

0.0.3

增强

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

0.0.2

修复

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

增强

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