vault backup: 2026-04-17 23:37:10
This commit is contained in:
4
.obsidian/appearance.json
vendored
4
.obsidian/appearance.json
vendored
@@ -4,5 +4,7 @@
|
||||
"nativeMenus": false,
|
||||
"theme": "moonstone",
|
||||
"accentColor": "",
|
||||
"enabledCssSnippets": []
|
||||
"enabledCssSnippets": [
|
||||
"多彩标签"
|
||||
]
|
||||
}
|
||||
70
.obsidian/snippets/多彩标签.css
vendored
Normal file
70
.obsidian/snippets/多彩标签.css
vendored
Normal 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);
|
||||
}
|
||||
3
.obsidian/types.json
vendored
3
.obsidian/types.json
vendored
@@ -26,6 +26,7 @@
|
||||
"TQ_show_task_count": "checkbox",
|
||||
"TQ_show_tree": "checkbox",
|
||||
"TQ_show_urgency": "checkbox",
|
||||
"TQ_show_toolbar": "checkbox"
|
||||
"TQ_show_toolbar": "checkbox",
|
||||
"写完了吗": "checkbox"
|
||||
}
|
||||
}
|
||||
43
.obsidian/workspace.json
vendored
43
.obsidian/workspace.json
vendored
@@ -13,13 +13,13 @@
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "School/vivado_ip.md",
|
||||
"file": "Template/AutoAdd.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"source": true,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "vivado_ip"
|
||||
"title": "AutoAdd"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -103,11 +103,9 @@
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-properties",
|
||||
"state": {
|
||||
"file": "School/vivado_ip.md"
|
||||
},
|
||||
"state": {},
|
||||
"icon": "lucide-info",
|
||||
"title": "vivado_ip的笔记属性"
|
||||
"title": "笔记属性"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -126,13 +124,13 @@
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "School/vivado_ip.md",
|
||||
"file": "Template/AutoAdd.md",
|
||||
"followCursor": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "vivado_ip 的大纲"
|
||||
"title": "AutoAdd 的大纲"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -204,7 +202,7 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 3
|
||||
"currentTab": 2
|
||||
},
|
||||
{
|
||||
"id": "bf1e7d1a52b4651c",
|
||||
@@ -255,18 +253,26 @@
|
||||
},
|
||||
"active": "9c82e7556515fa96",
|
||||
"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",
|
||||
"YueQian/相关网站.md",
|
||||
"Archive/test.md",
|
||||
"Collection/配置备忘/navidrome.md",
|
||||
"Collection/配置备忘/openclash配置.md",
|
||||
"Collection/配置备忘/Typecho插件Aplayer使用教程.md",
|
||||
"🏡HOME.md",
|
||||
"Bases/为什么会消失.md",
|
||||
"README.md",
|
||||
"Bases/Diary.base",
|
||||
"Diary/2026/04/2026-04-16 周四.md",
|
||||
"Bases/test.base",
|
||||
"Bases",
|
||||
"Bases/未命名.base",
|
||||
"Archive",
|
||||
@@ -276,22 +282,13 @@
|
||||
"Diary/2026/01/2026-01-30 周五.md",
|
||||
"Diary/2026/01/2026-01-31 周六.md",
|
||||
"Diary/2026/01/2026-01-27 周二.md",
|
||||
"Collection/未命名.md",
|
||||
"Collection/未命名 1.md",
|
||||
"Bases/Diay.base",
|
||||
"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/01",
|
||||
"Diary/2026/02",
|
||||
"Diary/2026",
|
||||
"未命名.canvas",
|
||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE0486404994804c5fb05039cff405656astickPicture.png",
|
||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE059f0c15158165303fc0fc990a90a445image.png",
|
||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE048d46d9bb04ceb46b8fe1f3cc419d92image.png",
|
||||
|
||||
87
.obsidian/workspaces.json
vendored
87
.obsidian/workspaces.json
vendored
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"workspaces": {
|
||||
"260122": {
|
||||
"260417": {
|
||||
"main": {
|
||||
"id": "8991b07ab8f0472d",
|
||||
"id": "5324373015726ba8",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "4e4eb7258fdc6262",
|
||||
"id": "69f4530e14d73640",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "0a3de9047665030d",
|
||||
"id": "9c82e7556515fa96",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "YueQian/相关网站.md",
|
||||
"mode": "preview",
|
||||
"file": "🏡HOME.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "相关网站"
|
||||
"title": "🏡HOME"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -86,18 +86,28 @@
|
||||
"dimension": 47.39756367663344,
|
||||
"children": [
|
||||
{
|
||||
"id": "d1e1fbb98edd7d1b",
|
||||
"id": "ffdb392eea0ad1e2",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"file": "YueQian/相关网站.md",
|
||||
"followCursor": true,
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "相关网站 的大纲"
|
||||
"icon": "lucide-tags",
|
||||
"title": "标签"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "f78029584b10fc88",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-properties",
|
||||
"state": {},
|
||||
"icon": "lucide-info",
|
||||
"title": "笔记属性"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -111,35 +121,22 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b701810dff40f03d",
|
||||
"id": "d1e1fbb98edd7d1b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "all-properties",
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"file": "🏡HOME.md",
|
||||
"followCursor": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-archive",
|
||||
"title": "添加笔记属性"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ffdb392eea0ad1e2",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "标签"
|
||||
"icon": "lucide-list",
|
||||
"title": "🏡HOME 的大纲"
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"currentTab": 3
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
@@ -189,11 +186,9 @@
|
||||
{
|
||||
"id": "841e99623ecdb9f4",
|
||||
"type": "leaf",
|
||||
"pinned": true,
|
||||
"state": {
|
||||
"type": "chinese-calendar-view",
|
||||
"state": {},
|
||||
"pinned": true,
|
||||
"icon": "calendar-with-checkmark",
|
||||
"title": "日历"
|
||||
}
|
||||
@@ -234,25 +229,33 @@
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"homepage:打开主页": false,
|
||||
"obsidian-livesync:P2P Replicator": false,
|
||||
"obsidian-livesync:Replicate": false,
|
||||
"obsidian-livesync:Show Log": false,
|
||||
"graph:查看关系图谱": false,
|
||||
"switcher:打开快速切换": false,
|
||||
"command-palette:打开命令面板": false,
|
||||
"workspaces:管理工作区布局": false,
|
||||
"i18n:I18N": false,
|
||||
"obsidian-git:打开Git源代码管理": false,
|
||||
"obsidian-excalidraw-plugin:新建绘图文件": false,
|
||||
"canvas:新建白板": false,
|
||||
"bases:新建数据库": false,
|
||||
"templater-obsidian:Templater": 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",
|
||||
"mtime": "2026-01-22T16:41:43+08:00"
|
||||
"mtime": "2026-04-17T23:08:26+08:00"
|
||||
}
|
||||
},
|
||||
"active": "260122"
|
||||
"active": "260417"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
views:
|
||||
- type: table
|
||||
name: 表格
|
||||
17
Bases/元数据列表.base
Normal file
17
Bases/元数据列表.base
Normal 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
|
||||
358
Collection/Markdown语法.md
Normal file
358
Collection/Markdown语法.md
Normal 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 语法作为链接的“链接文本”部分。
|
||||
> [](链接地址)
|
||||
> [](https://www.bing.com/)
|
||||
> 点击即可跳转到bing.com,哪怕图片找不到,点击依然跳转到链接。
|
||||
> ```
|
||||
## 图片
|
||||
|
||||

|
||||
|
||||
[](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
252
Collection/YAML用法.md
Normal 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,可以在项目中统一代码风格,实现保存时自动格式化。 |
|
||||
@@ -3,5 +3,6 @@ tags:
|
||||
- empty
|
||||
aliases: empty
|
||||
笔记类型: 未分类
|
||||
: -[ ]
|
||||
日期: <%tp.date.now("YYYY/M/D") %>
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user