vault backup: 2026-04-17 23:37:10

This commit is contained in:
2026-04-17 23:37:10 +08:00
parent bf1192b625
commit 65e42582fe
10 changed files with 768 additions and 70 deletions

View File

@@ -4,5 +4,7 @@
"nativeMenus": false, "nativeMenus": false,
"theme": "moonstone", "theme": "moonstone",
"accentColor": "", "accentColor": "",
"enabledCssSnippets": [] "enabledCssSnippets": [
"多彩标签"
]
} }

70
.obsidian/snippets/多彩标签.css vendored Normal file
View File

@@ -0,0 +1,70 @@
@charset "UTF-8";
/*
优化版Obsidian Metadata 多彩标签样式
- 只需修改下面的 --pill-bg-N 和 --pill-hover-N 变量即可定制你的调色板。
*/
/* 在所有非tags的metadata属性上统一定义颜色变量 */
.metadata-property:not([data-property-key="tags"]) {
/* --- 色板3: 大地色系 / Earth Tones --- */
/* AA=33 表示20%透明度, AA=40 表示25%透明度 */
--pill-bg-1: #a98c7833; --pill-hover-1: #a98c7840; /* Clay Brown */
--pill-bg-2: #d8c3a533; --pill-hover-2: #d8c3a540; /* Almond */
--pill-bg-3: #8e8d8a33; --pill-hover-3: #8e8d8a40; /* Stone Grey */
--pill-bg-4: #e9807433; --pill-hover-4: #e9807440; /* Terracotta */
--pill-bg-5: #e85a4f33; --pill-hover-5: #e85a4f40; /* Rust Red */
--pill-bg-6: #d8ae4733; --pill-hover-6: #d8ae4740; /* Ochre */
--pill-bg-7: #a49e8d33; --pill-hover-7: #a49e8d40; /* Khaki Grey */
--pill-bg-8: #e6b47c33; --pill-hover-8: #e6b47c40; /* Sandy Brown */
}
/* 基础样式:确保内边距和背景填充正确 */
.metadata-property:not([data-property-key="tags"]) .multi-select-pill {
--pill-padding-x: var(--tag-padding-x);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill::after {
width: 100% !important;
left: 0 !important;
}
/* 颜色循环:现在只需引用变量,代码非常整洁 */
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+1) {
--pill-background: var(--pill-bg-1);
--pill-background-hover: var(--pill-hover-1);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+2) {
--pill-background: var(--pill-bg-2);
--pill-background-hover: var(--pill-hover-2);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+3) {
--pill-background: var(--pill-bg-3);
--pill-background-hover: var(--pill-hover-3);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+4) {
--pill-background: var(--pill-bg-4);
--pill-background-hover: var(--pill-hover-4);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+5) {
--pill-background: var(--pill-bg-5);
--pill-background-hover: var(--pill-hover-5);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+6) {
--pill-background: var(--pill-bg-6);
--pill-background-hover: var(--pill-hover-6);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+7) {
--pill-background: var(--pill-bg-7);
--pill-background-hover: var(--pill-hover-7);
}
.metadata-property:not([data-property-key="tags"]) .multi-select-pill:nth-child(8n+8) {
--pill-background: var(--pill-bg-8);
--pill-background-hover: var(--pill-hover-8);
}

View File

@@ -26,6 +26,7 @@
"TQ_show_task_count": "checkbox", "TQ_show_task_count": "checkbox",
"TQ_show_tree": "checkbox", "TQ_show_tree": "checkbox",
"TQ_show_urgency": "checkbox", "TQ_show_urgency": "checkbox",
"TQ_show_toolbar": "checkbox" "TQ_show_toolbar": "checkbox",
"写完了吗": "checkbox"
} }
} }

View File

@@ -13,13 +13,13 @@
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "School/vivado_ip.md", "file": "Template/AutoAdd.md",
"mode": "source", "mode": "source",
"source": false, "source": true,
"backlinks": false "backlinks": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "vivado_ip" "title": "AutoAdd"
} }
} }
] ]
@@ -103,11 +103,9 @@
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "file-properties", "type": "file-properties",
"state": { "state": {},
"file": "School/vivado_ip.md"
},
"icon": "lucide-info", "icon": "lucide-info",
"title": "vivado_ip的笔记属性" "title": "笔记属性"
} }
}, },
{ {
@@ -126,13 +124,13 @@
"state": { "state": {
"type": "outline", "type": "outline",
"state": { "state": {
"file": "School/vivado_ip.md", "file": "Template/AutoAdd.md",
"followCursor": true, "followCursor": true,
"showSearch": false, "showSearch": false,
"searchQuery": "" "searchQuery": ""
}, },
"icon": "lucide-list", "icon": "lucide-list",
"title": "vivado_ip 的大纲" "title": "AutoAdd 的大纲"
} }
} }
], ],
@@ -204,7 +202,7 @@
} }
} }
], ],
"currentTab": 3 "currentTab": 2
}, },
{ {
"id": "bf1e7d1a52b4651c", "id": "bf1e7d1a52b4651c",
@@ -255,18 +253,26 @@
}, },
"active": "9c82e7556515fa96", "active": "9c82e7556515fa96",
"lastOpenFiles": [ "lastOpenFiles": [
"Bases/元数据列表.base",
"Collection/Markdown语法.md",
"Collection/linux命令.md",
"Collection/KMP算法.md",
"Collection/连~都忘记了的小知识.md",
"Collection/YAML用法.md",
"Collection/PID控制算法.md",
"🏡HOME.md",
"README.md",
"Diary/2026/04/2026-04-16 周四.md",
"未命名.canvas",
"School/vivado_ip.md",
"Template/Diary.md", "Template/Diary.md",
"YueQian/相关网站.md", "YueQian/相关网站.md",
"Archive/test.md", "Archive/test.md",
"Collection/配置备忘/navidrome.md", "Collection/配置备忘/navidrome.md",
"Collection/配置备忘/openclash配置.md", "Collection/配置备忘/openclash配置.md",
"Collection/配置备忘/Typecho插件Aplayer使用教程.md", "Collection/配置备忘/Typecho插件Aplayer使用教程.md",
"🏡HOME.md",
"Bases/为什么会消失.md", "Bases/为什么会消失.md",
"README.md",
"Bases/Diary.base", "Bases/Diary.base",
"Diary/2026/04/2026-04-16 周四.md",
"Bases/test.base",
"Bases", "Bases",
"Bases/未命名.base", "Bases/未命名.base",
"Archive", "Archive",
@@ -276,22 +282,13 @@
"Diary/2026/01/2026-01-30 周五.md", "Diary/2026/01/2026-01-30 周五.md",
"Diary/2026/01/2026-01-31 周六.md", "Diary/2026/01/2026-01-31 周六.md",
"Diary/2026/01/2026-01-27 周二.md", "Diary/2026/01/2026-01-27 周二.md",
"Collection/未命名.md",
"Collection/未命名 1.md", "Collection/未命名 1.md",
"Bases/Diay.base", "Bases/Diay.base",
"Template/AutoAdd.md", "Template/AutoAdd.md",
"Diary/2026/02/2026-02-05 周四.md",
"Diary/2026/02/2026-02-11 周三.md",
"Diary/2026/02/2026-02-03 周二.md",
"Diary/2026/02/2026-02-01 周日.md",
"Diary/2026/04/2026-04-17 周五.md",
"Diary/2026-04-16 周四.md",
"未命名.md",
"Diary/2026/04", "Diary/2026/04",
"Diary/2026/01", "Diary/2026/01",
"Diary/2026/02", "Diary/2026/02",
"Diary/2026", "Diary/2026",
"未命名.canvas",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE0486404994804c5fb05039cff405656astickPicture.png", "Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE0486404994804c5fb05039cff405656astickPicture.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE059f0c15158165303fc0fc990a90a445image.png", "Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE059f0c15158165303fc0fc990a90a445image.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE048d46d9bb04ceb46b8fe1f3cc419d92image.png", "Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE048d46d9bb04ceb46b8fe1f3cc419d92image.png",

View File

@@ -1,27 +1,27 @@
{ {
"workspaces": { "workspaces": {
"260122": { "260417": {
"main": { "main": {
"id": "8991b07ab8f0472d", "id": "5324373015726ba8",
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "4e4eb7258fdc6262", "id": "69f4530e14d73640",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "0a3de9047665030d", "id": "9c82e7556515fa96",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "YueQian/相关网站.md", "file": "🏡HOME.md",
"mode": "preview", "mode": "source",
"source": false, "source": false,
"backlinks": false "backlinks": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "相关网站" "title": "🏡HOME"
} }
} }
] ]
@@ -86,18 +86,28 @@
"dimension": 47.39756367663344, "dimension": 47.39756367663344,
"children": [ "children": [
{ {
"id": "d1e1fbb98edd7d1b", "id": "ffdb392eea0ad1e2",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "outline", "type": "tag",
"state": { "state": {
"file": "YueQian/相关网站.md", "sortOrder": "frequency",
"followCursor": true, "useHierarchy": false,
"showSearch": false, "showSearch": false,
"searchQuery": "" "searchQuery": ""
}, },
"icon": "lucide-list", "icon": "lucide-tags",
"title": "相关网站 的大纲" "title": "标签"
}
},
{
"id": "f78029584b10fc88",
"type": "leaf",
"state": {
"type": "file-properties",
"state": {},
"icon": "lucide-info",
"title": "笔记属性"
} }
}, },
{ {
@@ -111,35 +121,22 @@
} }
}, },
{ {
"id": "b701810dff40f03d", "id": "d1e1fbb98edd7d1b",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "all-properties", "type": "outline",
"state": { "state": {
"sortOrder": "frequency", "file": "🏡HOME.md",
"followCursor": true,
"showSearch": false, "showSearch": false,
"searchQuery": "" "searchQuery": ""
}, },
"icon": "lucide-archive", "icon": "lucide-list",
"title": "添加笔记属性" "title": "🏡HOME 的大纲"
}
},
{
"id": "ffdb392eea0ad1e2",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "标签"
} }
} }
] ],
"currentTab": 3
} }
], ],
"direction": "horizontal", "direction": "horizontal",
@@ -189,11 +186,9 @@
{ {
"id": "841e99623ecdb9f4", "id": "841e99623ecdb9f4",
"type": "leaf", "type": "leaf",
"pinned": true,
"state": { "state": {
"type": "chinese-calendar-view", "type": "chinese-calendar-view",
"state": {}, "state": {},
"pinned": true,
"icon": "calendar-with-checkmark", "icon": "calendar-with-checkmark",
"title": "日历" "title": "日历"
} }
@@ -234,25 +229,33 @@
}, },
"left-ribbon": { "left-ribbon": {
"hiddenItems": { "hiddenItems": {
"homepage:打开主页": false, "obsidian-livesync:P2P Replicator": false,
"obsidian-livesync:Replicate": false,
"obsidian-livesync:Show Log": false,
"graph:查看关系图谱": false, "graph:查看关系图谱": false,
"switcher:打开快速切换": false, "switcher:打开快速切换": false,
"command-palette:打开命令面板": false, "command-palette:打开命令面板": false,
"workspaces:管理工作区布局": false, "workspaces:管理工作区布局": false,
"i18n:I18N": false,
"obsidian-git:打开Git源代码管理": false,
"obsidian-excalidraw-plugin:新建绘图文件": false, "obsidian-excalidraw-plugin:新建绘图文件": false,
"canvas:新建白板": false, "canvas:新建白板": false,
"bases:新建数据库": false, "bases:新建数据库": false,
"templater-obsidian:Templater": false, "templater-obsidian:Templater": false,
"pdf-plus:PDF++: 切换自动粘贴": false, "pdf-plus:PDF++: 切换自动粘贴": false,
"pdf-plus:PDF++: 切换自动对焦": false, "pdf-plus:PDF++: 切换自动对焦": false,
"pdf-plus:PDF++: 切换自动复制": false "pdf-plus:PDF++: 切换自动复制": false,
"nutstore-sync:Start sync": false,
"nutstore-sync:Stop sync": false,
"daily-notes:打开/创建今天的日记": false,
"obsidian-git:打开Git源代码管理": false,
"homepage:打开主页": false,
"obsidian42-brat:BRAT": false,
"i18n:common.i18n": false,
"obsidian-livesync:显示自定义同步": false
} }
}, },
"active": "841e99623ecdb9f4", "active": "841e99623ecdb9f4",
"mtime": "2026-01-22T16:41:43+08:00" "mtime": "2026-04-17T23:08:26+08:00"
} }
}, },
"active": "260122" "active": "260417"
} }

View File

@@ -1,3 +0,0 @@
views:
- type: table
name: 表格

View File

@@ -0,0 +1,17 @@
views:
- type: table
name: 表格
order:
- file.name
- 笔记类型
- tags
- aliases
sort:
- property: 笔记类型
direction: ASC
- property: file.name
direction: ASC
columnSize:
file.name: 210
note.笔记类型: 171
note.tags: 344

View File

@@ -0,0 +1,358 @@
---
tags:
- Markdown语法
- 标记语言
- Obsidian
aliases:
- MD语法
- Obsidian Markdown
- Markdown教程
笔记类型: 永久笔记
日期: 2026/4/17
---
# **语法速查表**
| 功能 (Feature) | Markdown 语法 (Syntax) | 效果预览 (Result) |
| :--- | :--- | :--- |
| 一级标题 | `# 标题内容` | 最大的标题 |
| 二级标题 | `## 标题内容` | |
| 三级标题 | `### 标题内容` | (依此类推,可到六级) |
| --- | --- | --- |
| **加粗** | `**需要加粗的文字**` | **需要加粗的文字** |
| *斜体* | `*需要倾斜的文字*` | *需要倾斜的文字* |
| ***加粗并斜体*** | `***又粗又斜的文字***` | ***又粗又斜的文字*** |
| ~~删除线~~ | `~~被删除的文字~~` | ~~被删除的文字~~ |
| --- | --- | --- |
| 无序列表 | `- 列表项``* 列表项` | • 列表项 |
| 有序列表 | `1. 列表项一`<br>`2. 列表项二` | 1. 列表项一<br>2. 列表项二 |
| 任务列表(待办) | `- [ ] 未完成的任务`<br>`- [x] 已完成的任务` | ☐ 未完成的任务<br>☑ 已完成的任务 |
| --- | --- | --- |
| > 引用 | `> 这是一段引用的文字` | > 这是一段引用的文字 |
| `行内代码` | `` `code` `` | 用于突出显示单个变量或命令 |
| 代码块 | ```` ```python `<br>`print("Hello, World!")`<br>` ``` ```` | 用于显示多行代码片段 |
| --- | --- | --- |
| 链接 | `[链接显示的文字](https://obsidian.md)` | [链接显示的文字](https://obsidian.md) |
| 图片 | `![图片的替代文字](图片链接或路径)` | (在笔记中会直接显示图片) |
| 水平分割线 | `---` 或 `***` | 一条横跨整个页面的线 |
> [!note]+ 标题
> ```
> 注意:所有符号都是英文输入法下的符号
> 井号加空格,几个井号就是几级标题,一级标题字体最大。
> # 一级标题
> ## 二级标题
> ```
# 标题 1
## 标题 2
### 标题 3
#### 标题 4
##### 标题 5
###### 标题 6
---
> [!note]+ 文本
> ```
> 注意:所有符号都是英文输入法下的符号
> 两个星号是加粗:**我是加粗字体**
> 一个型号是斜体:*我是斜体*
> 三个星号,或者三个下划线是粗斜体:***我是粗斜体***___我是粗斜体___
> 两个等号是高亮:==我是高亮==
> 两个波浪线是删除:~~我是删除~~
> ```
## 文本
普通文本
**段落粗体文本**
*段落斜体文本*
==高亮==
~~删除~~
***粗斜体***
___粗斜体___
~~删除~~
---
> [!note]+ 列表
> ```
> 注意:所有符号都是英文输入法下的符号
> 无序列表:减号/加号/星号 + 空格,三个符号哪个都可以,但是建议用减号。 - 列表项1
> 有序列表:数字+点+空格1. 列表项
> 输入完一个列表项后,打回车可以继续下一个列表项
> 列表嵌套使用tab可以让列表缩进使用shift+tab可以取消缩进。
>
> 任务列表:方括号里面一个空格或者叉,空格代表未完成,叉代表已完成。
> [x] 任务 1
> [ ] 任务 2
> Task插件可以使已完成的任务后面自动显示完成时间。
>
>任务列表并非原始的、John Gruber 定义的 Markdown 标准语法。然而,它已经成为一种被广泛接受和支持的 Markdown 扩展语法,许多现代的 Markdown 编辑器和笔记应用也都采纳了这种任务列表语法,因为它非常直观和实用。
> ```
## 列表
**无序列表**
- 列表项 1
- 列表项 2
- 列表项 2.1
- 列表项 2.2
- 列表项 3
**有序列表**
1. 列表项 a
2. 列表项 b
1. 列表项 b1
2. 列表项 b2
3. 列表项 c
**任务列表**
- [ ] 任务 1
- [ ] 任务 2
- [ ] 嵌套任务 2.1
- [ ] 嵌套任务 2.2
- [ ] 任务 3
---
## 段落
> [!note]+ 段落
> ```
> 注意:所有符号都是英文输入法下的符号
> 引用:大于号+空格:> 我是引用
> 嵌套引用:多个大于号,每多一个大于号,代表深一层嵌套
> 分割线:三个减号然后回车:---
> 强制换行 (Soft Break / Line Break):在同一段落内强制开始一个新行,而不是开始一个新段落。使用方法:在一行的末尾输入两个或更多的空格,然后按回车键。
> 备选方法:(如果 Markdown 解析器支持 HTML):直接使用 HTML 的 <br> 标签。
>
> ```
引用语法:
> 引用了一段名人名言
>> 嵌套引用
>>> 俄罗斯套娃
强制换行:
这是第一行文字(假设末尾有两个空格)
第二行
分割线:
---
> [!note]+ 链接
> ```
> 注意:所有符号都是英文输入法下的符号
> [普通链接](https://www.bing.com/)
> [普通链接带标题](https://www.bing.com/ "普通链接带标题")
> 直接链接:<https://github.com>
> 锚点链接1. 在文稿起草阶段还没确定具体网址但可以先给出网址标题。2. 同一篇文章需要重复出现同一个网址时.
> 使用方法:[网址标题][网址名]
> 然后在其他地方(一般是文章最后)给出网址名的地址:[网址名]:https://www.bing.com/
> [锚点链接][anchor-id]
> [anchor-id]: http://www.this-anchor-link.com/
>
> ```
## 链接
[普通链接](https://www.bing.com/)
直接链接:<https://github.com>
[锚点链接][锚点名称123]
[锚点名称123]: http://www.this-anchor-link.com/
---
> [!note]+ 脚注
> ```
> 注意:所有符号都是英文输入法下的符号
> 方括号内,上箭头,外加脚注名称(一般为标号)
> 本句话要加脚注[^01]
> [^01]:这是解释脚注 01的内容
> ```
## 脚注
1. 要添加脚注的话[^01]
2. 第二个要添加脚注的话[^02]
[^01]:脚注内容一
[^02]:脚注内容二
---
> [!note]+ 图片
> ```
> 注意:所有符号都是英文输入法下的符号
> 图片语法与链接类似,只是在前面多一个感叹号!。
> 示例:![替代文本](图片路径 "可选的图片标题")
> 替代文本:当图片无法显示时展示的文字,也有助于屏幕阅读器。
> 图片路径:可以是网络图片的 URL也可以是本地文件的相对或绝对路径。
> 可选的图片标题:鼠标悬停在图片上时显示的提示文字。
>
> 带链接的图片 (Clickable Images)
> 使用方法:将图片的 Markdown 语法作为链接的“链接文本”部分。
> [![替代文本](图片路径)](链接地址)
> [![可爱的猫咪](/assets/obsidian.jpg)](https://www.bing.com/)
> 点击即可跳转到bing.com哪怕图片找不到点击依然跳转到链接。
> ```
## 图片
![Obsidian Logo](https://obsidian.md/images/obsidian-logo-gradient.svg "Obsidian Logo")
[![可爱的猫咪](/assets/obsidian.jpg)](https://www.bing.com/)
---
> [!note]+ 表格
> ```
> 注意:所有符号都是英文输入法下的符号
> 表头: 用竖线 | 分隔单元格内容。
> 分隔行: 用竖线 | 分隔,并使用至少三个减号 - 来创建每个单元格的分隔线。可以通过在减号前后添加冒号 : 来控制该列的对齐方式:
> 左对齐 (默认):--- (或 :-)
> 居中对齐::---: (或 :-:)
> 右对齐:---: (或 -:)
> 内容行 (Content Rows): 用竖线 | 分隔单元格内容。
> 最外层的竖线 | 是可选的,但为了美观和清晰,建议加上。
> ```
## 表格
| 名字 | 姓氏 | 电子邮件 |
| ------ | ------- | -------------------------- |
| John | Doe | john.doe@example.com |
| Muffin | Poppies | muffin.poppies@example.com |
| Jane | Doe | jane.doe@example.com |
| 左对齐 | 居中对齐 | 右对齐 |
| :----- | :------: | -----: |
| AAA | BBB | CCC |
---
> [!note]+ 代码
> ```
> 注意:所有符号都是英文输入法下的符号
> 行内代码用一个点包裹代码块用三个点包裹点是键盘上数字1左边的点。
> 代码块可以指定代码语言比如python、javascript直接加在三个点后面即可。
> 对于 Markdown 中的语言标识符(例如 javascript通常不区分大小写。这意味着 javascript、JavaScript 和 JAVASCRIPT 应该产生相同的语法高亮效果。不过,最佳实践是使用小写形式。但这也可能取决于具体的 Markdown 解析器。
>
> Mermaid代码可以生成各种图标感兴趣的可以单独学习Mermaid语法。
> ```
## 代码
**行内代码**
变量 `myvar` 被设置为值 `100`。
**代码块**
```python
import numpy as np
def calc(a):
return np.sqrt(a)*3
test = calc(12)
```
Mermaid代码
```mermaid
graph TD
A[开始] --> B(处理);
B --> C{条件?};
C -- 是 --> D[操作1];
C -- 否 --> E[操作2];
D --> F[结束];
E --> F;
```
# [[Obsidian]]特有或增强的Markdown 功能
> [!note]+ 双链
> ```
> 注意:所有符号都是英文输入法下的符号
> 1. [[笔记文件名]]:链接到仓库内的另一篇笔记。使用方法:用双层方括号 [[]] 包裹笔记的文件名 (无需 .md 后缀)。示例:[[我的待办事项]]
> 2. [[笔记文件名#标题名]]:链接到另一篇笔记中的特定标题。使用方法:在文件名后加 # 和目标标题的文本。示例:[[Markdown 语法详解#10. 表格]]
> 3. [[笔记文件名|自定义显示文本]]:链接到另一篇笔记,但显示自定义的链接文字。使用方法:在文件名后加 | 和希望显示的文本。示例: [[2024-05-27 Daily Note|昨天的日记]]
> 4. ![[笔记文件名]]:将另一篇笔记的全部内容嵌入到当前笔记中。使用方法:与图片嵌入类似,但使用双层方括号,并以 ! 开头。示例: ![[常用代码片段]]
> 5. ![[笔记文件名#标题名]]:将另一篇笔记中特定标题下的内容嵌入。使用方法:在文件名后跟特定标题。示例: ![[会议记录#行动项]]
> 6. ![[笔记文件名#^块ID]]:嵌入笔记中被 \^块ID 标记的特定块段落、列表项等。使用方法先在源笔记中在你想要引用的段落或列表项的末尾添加一个块引用ID格式为 ^yourBlockID (例如 ^task123)。然后在目标笔记中用 ![[源笔记文件名#^yourBlockID]] 来嵌入它。示例:在 "任务列表.md" 中: - [ ] 完成报告 ^reportTask然后在当前笔记中嵌入 ![[任务列表#^reportTask]]
> ```
## 双链
注意这里使用反斜杠是为了让Obsidian不把他识别为一个双链否则Dashboard就会被认为是一个双链从而在关系图谱中看到这个Dashboard节点。
内部链接: \[[Dashboard]]
---
> [!note]+ 标签
> ```
> 注意:所有符号都是英文输入法下的符号
> 以井号 # 开头,后跟标签名称。标签名不能包含空格,可以用 -  _ 连接多词标签 (如 #读书笔记 或 #project-alpha)。标签可以放在笔记的任意位置,包括 YAML Frontmatter 中的 tags 字段。
> ```
## 标签
标签: #dashboard #notes
---
> [!note]+ 数学与公式
> ```
> 注意:所有符号都是英文输入法下的符号
> Obsidian 内置了对 KaTeX 的支持,用于渲染 LaTeX 数学公式。
> $行内数学公式$:将公式嵌入到文本行中。
> 使用方法:用一对美元符号 $ 包裹 LaTeX 公式。
> $$块级数学公式$$:将公式在单独的块中居中显示。
> 使用方法:两对美元符号包裹
> ```
## 数学与公式
$$g=g_0 \frac{R^2}{\left( R + z \right)^2} = \frac{g_0}{\left(1 + z/R \right)^2} $$
其中,
$g$ = 指定距离处的相对引力。
$g_0$ = \[[Surface Gravity |物体的表面引力]]。
$R$ = 物体的半径。(通常是物体的赤道半径)。
$z$ = 物体表面以上的距离。
---
> [!note]+ 引用块
> ```
> 注意:所有符号都是英文输入法下的符号
> 使用方法: 引用块 (>) 之后紧跟 [!类型]。类型可以是 note, abstract, info, todo, tip, success, question, warning, failure, danger, bug, example, quote 等。
> 可选标题**: 在 [!类型] 后可以添加自定义标题文本。
> 可折叠**: 在类型后加减号 - (如 [!INFO]-) 可使标注默认折叠,加加号 + (如 [!INFO]+) 可使其默认展开 (通常默认就是展开)。
> ```
## 引用块 (Callouts)
> [!note]+ 笔记引用块
> 这是一个笔记引用块...
> [!warning]- 警示引用块
> 这是一个警示引用块...

252
Collection/YAML用法.md Normal file
View File

@@ -0,0 +1,252 @@
---
tags:
- yaml
aliases:
- yaml用法
笔记类型: 永久笔记
日期: 2026/4/17
---
**YAML (YAML Ain't Markup Language) 是一种以数据为中心、对人类友好的数据序列化语言。它因其简洁和高可读性而备受青睐,尤其是在配置文件和知识管理领域。**
### 1. YAML的应用场景
#### 作为Markdown知识笔记的元数据
##### 什么是YAML Front Matter
- **定义:** 它是添加到文件第一行的一系列纯文本属性用于在Markdown等文件中添加元数据。
- **别称:** 也常被称为 front matter、页眉、前页、扉页、前言。
- **作用:** 它是一种人类可读、文件级的元数据,为笔记本身添加了结构化的信息,使得软件可以基于这些信息进行强大的自动化处理,例如分类、查询和筛选。
在Obsidian、Joplin等众多工具中YAML Front Matter是核心功能。它为一篇笔记提供了超越其正文内容的“身份信息”。
**示例:** 在一篇Obsidian笔记的开头你可以这样定义元数据。
```yaml
---
title: "我的Obsidian使用技巧"
date: 2025-08-21
tags: [Obsidian, 知识管理, YAML]
aliases: [Obsidian技巧, 如何使用Obsidian]
---
```
#### 作为AI提示词的格式
当构建复杂的AI提示词Prompt需要一种能够清晰组织指令、变量和上下文的格式。YAML在这方面表现出色。
| 格式 | 优点 | 缺点 | 适用场景 |
| ------------ | ------------------------------------------------------------ | -------------------------------------- | -------------------------------------- |
| **YAML** | 结构清晰,可读性高,易于手写和维护,适合表达复杂的层级关系。 | 语法依赖严格的缩进,对新手不友好。 | 复杂的、多参数的、需要模板化的AI任务。 |
| **Markdown** | 自由流畅,接近自然语言,适合编写故事或对话型提示词。 | 结构性差,难以定义精确的配置参数。 | 文学创作、角色扮演、简单的问答。 |
| **JSON** | 机器解析极为友好语法严格不易产生歧义是API交互的标准。 | 手写繁琐,括号和引号过多,可读性较差。 | 程序化的API调用自动化工作流。 |
#### 作为配置文件
YAML是许多现代软件和工具首选的配置文件格式因为它能清晰地表达复杂的配置结构。
- **智能家居自动化:** 在流行的开源智能家居平台 Home Assistant 中用户主要通过编辑YAML文件 configuration.yaml来设置自动化场景。例如“当太阳下山时自动打开客厅的灯”或者“当传感器检测到湿度低于40%时开启加湿器”这样的规则都是通过YAML来定义的。
- **PC游戏的插件与Mod:** 许多PC游戏尤其是沙盒类游戏如《我的世界》Minecraft的服务器插件或Mod都使用YAML文件作为配置文件。服务器的管理员或玩家可以通过修改这些 .yml 文件来调整游戏规则、设置商店物品价格、或者自定义玩家加入时的欢迎信息而无需编写任何代码。
### 2. YAML的基础语法
#### <mark style="background: #FFF3A3A6;">核心规则</mark>
1. **格式**:采用“关键词: 值”的键值对形式(关键词 英文冒号 空格 值)。
样例:
```yaml
views:
- type: table
name: 表格
order:
- file.name
- file.fullname
- file.tags
- file.folder
```
2. **空格与缩进**YAML 的语法对缩进和空格**极其敏感**,这是其结构的核心。理解并遵守这些规则是正确编写 YAML 的关键。
- **使用空格进行缩进**:通过空格缩进来表示数据的层级关系和嵌套。
- **严禁使用 Tab 键**:只能使用空格进行缩进,绝不能使用 Tab 键。混合使用或单独使用 Tab 键都会导致解析错误。
- **缩进需保持一致**:同一层级的元素必须左侧对齐(即保持相同的缩进量)。通常推荐使用 2 个或 4 个空格作为一级缩进。
- **冒号和短横线后的空格**
- 键值对的冒号 (:) 后面必须跟一个空格。
- 列表项的短横线 (-) 后面必须跟一个空格。
#### 基本数据结构
YAML 主要由三种基本数据结构组成纯量Scalars、序列Sequences/Lists和映射Mappings/Dictionaries
##### 1. 纯量 (Scalars)
纯量是单个的、不可分割的值,是 YAML 中最基本的数据单元。
- **字符串 (String)**
- 默认无需引号my_string: Hello YAML
- 单引号 ('):不会转义特殊字符,所有内容视为字面量。
- 双引号 ("):会转义特殊字符,例如 \n 会被解析为换行符。
- **数字 (Number)**:包括整数和浮点数。
- **布尔值 (Boolean)**true  false。
- **空值 (Null)**使用 null  ~ 表示。
**示例代码:**
```yaml
# 字符串
string_value: Hello YAML
quoted_string: "This is a string with a \n newline."
# 数字
integer_value: 1024
float_value: 3.14159
# 布尔值
is_active: true
is_enabled: false
# 空值
empty_value: null
another_empty: ~
```
##### 2. 序列 (Sequences / Lists)
序列是一组有序的值,类似于编程语言中的数组或列表。每个列表项由一个短横线 (-) 和一个空格开头。
**示例代码:**
```yaml
# 一个简单的水果列表
fruits:
- Apple
- Orange
- Strawberry
# 也可以使用行内inline格式
fruits_inline: [Apple, Orange, Strawberry]
```
##### 3. 映射 (Mappings / Dictionaries)
映射是键值对key-value的集合类似于编程语言中的字典或哈希表。
**示例代码:**
```yaml
# 描述一个用户的基本信息
user:
name: John Doe
age: 30
email: john.doe@example.com
# 也可以使用行内inline格式
user_inline: {name: Jane Doe, age: 28}
```
#### 复合结构:数据嵌套
以上三种基本结构可以自由组合,形成复杂的数据结构。这是 YAML 强大功能的核心体现。
**示例代码:**
```yaml
# 一个用户列表,每个用户都是一个包含详细信息的映射
users:
# 第一个用户
- name: Alice
age: 28
is_admin: true
roles: # "roles" 的值是一个序列
- editor
- publisher
# 第二个用户
- name: Bob
age: 35
is_admin: false
roles:
- viewer
```
#### 多行文本
**字面量块 `|`**:保留每一个换行。适合要“按原样呈现”的文本。
```yaml
about: |
第一行
第二行
第三行
```
解析后:`"第一行\n第二行\n第三行\n"`(注意末尾有 1 个换行因为默认是clip-保留一个结尾换行(\n但丢掉多余的尾随空行
**折叠块** `>`:把换行折叠为空格(空行保留为换行)
```yaml
about: >
这一段
被写成了多行
但会折叠成一行显示
空行用来分段
分段之间会出现真正的换行
```
解析后:`"这一段 被写成了多行 但会折叠成一行显示\n\n空行用来分段 分段之间会出现真正的换行\n"`
(你看到:单个换行被折成空格;空行保留为 `\n`末尾仍有一个换行因为clip-保留一个结尾换行(\n但丢掉多余的尾随空行
#### 注释
使用井号 (#) 进行单行注释。从 # 开始到该行末尾的所有内容都会被忽略。
```yaml
# 这是一个注释,它将被解析器忽略。
key: value # 这也是一个行内注释。
```
### 3. YAML在Obsidian中的实践
在Obsidian中YAML元数据是实现知识库从简单笔记集合升级为强大个人数据库的关键。它为每篇笔记赋予了结构化的“属性”使得自动化管理和知识发现成为可能。
#### 从YAML Front Matter到“属性”视图
最初YAML元数据需要手动在笔记顶端的`---`分隔符之间编写。为了降低使用门槛并提升体验Obsidian推出了核心的“**属性**”Properties功能。
* **可视化界面**你不再需要手动输入YAML代码可以通过一个直观的界面在笔记顶部添加、编辑或删除属性。这个界面提供了文本、数字、日期、复选框和列表等多种属性类型并会自动补全已存在的属性名和值极大地保证了数据的一致性。
* **源码对应**你在属性界面上的所有操作都会实时、准确地转换成笔记源文件顶部的标准YAML Front Matter。你随时可以切换到“源码模式”查看和编辑底层的YAML代码。
#### Obsidian原生支持的特殊属性
Obsidian会对一些特定的YAML属性赋予特殊功能让它们与软件的核心功能深度集成。
| 属性 (Property) | 功能描述 (Description) | 格式要求 (Format Requirement) |
| :--- | :--- | :--- |
| `tags` | 定义笔记的标签会自动被Obsidian的“标签面板”识别和索引。 | 必须是列表Array格式。 |
| `aliases` | 为笔记设置一个或多个“别名”,方便通过别名进行链接和搜索。 | 必须是列表Array格式。 |
| `cssclasses` | 为当前笔记应用一个或多个自定义的CSS样式片段实现特定的视觉效果。 | 必须是列表Array格式。 |
> **重要更新**从Obsidian 1.4版本开始,官方统一并强制要求这些原生属性必须使用复数形式(`tags`, `aliases`, `cssclasses`),并且它们的值必须是列表格式。
#### 设计你的个人化元数据系统
YAML的真正威力在于自定义。通过建立一套规范的元数据体系你可以为自己的知识库量身打造强大的分类和检索系统。
| 实践建议 (Practice) | 目的与描述 (Purpose & Description) | 示例 (Example) |
| :--- | :--- | :--- |
| **规范命名** | 为了便于Dataview等插件查询建议属性名全部使用小写并用下划线代替空格。 | `creation_date` |
| **笔记分类** | 使用`type``category`属性来定义笔记的类型,这是进行分类查询的基础。 | `type: book` |
| **状态追踪** | 使用`status`属性来管理笔记的生命周期或项目的进度。 | `status: seedling` (想法) |
| **建立关联** | 除了使用`[[链接]]`,你还可以用属性来定义更明确的关系。 | `author: [[作者A]]` |
#### 通过Obsidian插件让你的元数据“活”起来
你精心维护的YAML属性通过插件可以实现知识的自动化组织与呈现。
| 插件 (Plugin) | 核心功能 (Core Function) | 应用实例 (Application Example) |
| :--- | :--- | :--- |
| **Dataview** | 使用简单的查询语言DQL从整个知识库中筛选、排序和展示笔记自动生成动态的笔记列表和表格。 | 创建一个“动态首页”,自动汇总所有 `status: in-progress` 的任务。 |
| **Bases** | (官方插件) 提供一个可视化的、类似Notion数据库的界面表格、看板等来浏览和批量编辑笔记的元数据。 | 以看板视图来管理所有 `type: project` 的笔记,并拖动卡片来改变它们的 `status` 属性。 |
| **Metadata Menu** | 极大地增强了属性的编辑体验,可以为属性预设可选值或创建依赖关系,实现更高效、规范的元数据录入。 | 为`status`属性设置固定的下拉菜单选项:"待办"、"进行中"、"完成"。 |
### 4. YAML的编辑器或格式化工具
| 工具 | 类型 | 主要功能 |
| ----------------------- | -------------- | ------------------------------------------------------------------ |
| **VS Code + YAML 插件** | 桌面编辑器 | 语法高亮、自动补全、实时错误校验、代码折叠、格式化。 |
| **Online YAML Parsers** | 在线工具,例如[YAML Checker - The YAML Syntax Validator](https://yamlchecker.com/) | 快速验证YAML语法是否正确进行格式化和美化适合临时检查。 |
| **Prettier** | 代码格式化工具,例如[Prettier · Opinionated Code Formatter · Prettier](https://prettier.io/) | 通过插件支持YAML可以在项目中统一代码风格实现保存时自动格式化。 |

View File

@@ -3,5 +3,6 @@ tags:
- empty - empty
aliases: empty aliases: empty
笔记类型: 未分类 笔记类型: 未分类
: -[ ]
日期: <%tp.date.now("YYYY/M/D") %> 日期: <%tp.date.now("YYYY/M/D") %>
--- ---