Linter插件详细指南
Obsidian Linter 插件 - Markdown 和 YAML 自动格式化完全指南
#resource / obsidian
#type / howto
#status / evergreen
[!info] related notes
Linter 插件详细指南
核心功能:Markdown 和 YAML 格式化、自动时间戳更新、代码格式规范化
难度级别:⭐⭐⭐
推荐指数:⭐⭐⭐⭐⭐
必装程度:必装(保证格式一致性)
功能概览
核心特性
| 功能 | 说明 | 场景 |
|---|---|---|
| 标题格式化 | 自动调整标题前后空行 | 统一文档结构 |
| 列表格式化 | 规范列表标记与缩进 | 保持层级清晰 |
| YAML 格式化 | 自动排序 YAML 键值 | 元数据一致 |
| 时间戳更新 | 自动更新 updated 字段 | 追踪修改历史 |
| 代码块格式 | 格式化代码块语言标记 | 代码高亮统一 |
| 链接格式 | 规范 Wiki Link 写法 | 链接一致性 |
| 逗号转换 | 中英文逗号转换 | 国际化规范 |
Linter vs 手动编辑
| 项目 | 手动编辑 | Linter |
|---|---|---|
| 时间成本 | 高 | 自动 |
| 一致性 | 易出错 | 100% 一致 |
| 更新 updated 字段 | 需手工 | 自动 |
| 学习成本 | 无 | 低 |
安装与配置
安装插件
- Settings → Community plugins → Browse
- 搜索 “Linter”
- 安装并启用
推荐配置(开箱即用)
Settings → Linter
# 核心规则启用
Heading Blank Lines:
enabled: true
bottom: 1 # 标题后 1 空行
YAML Key Sort:
enabled: true # 自动排序 YAML 键
Trailing Spaces:
enabled: true # 删除行末空格
Two Spaces Between Lines:
enabled: false # 关闭(否则会删除多个空行)
No Trailing Punctuation in Heading:
enabled: true # 标题末尾无标点
List Consistent Markers:
enabled: true # 列表标记统一
Paste as Plain Text:
enabled: true # 粘贴为纯文本
# 时间戳更新(关键功能)
YAML Timestamp:
enabled: true
date_format: "YYYY-MM-DD HH:mm:ss"
key: "updated" # 自动更新 updated 字段
insert_after: "created"
格式化时机
Lint on Save:
enabled: true # 保存时自动格式化
Lint on Change:
enabled: true # 输入时实时格式化(可能影响性能)
常见规则详解
1. 标题格式化(Heading Blank Lines)
规则:标题前后空行数
# ❌ 错误示例
内容
## 子标题
继续内容
# ✅ 正确示例
内容
## 子标题
继续内容
配置
Heading Blank Lines:
top: 1 # 标题前 1 空行(H1 除外)
bottom: 1 # 标题后 1 空行
2. YAML 自动排序(YAML Key Sort)
作用:让 YAML 字段按字母顺序排列,便于查找
# ❌ 乱序
---
title: "笔记"
tags:
- tech
created: 2025-12-08
updated: 2025-12-08
---
# ✅ 自动排序
---
created: 2025-12-08
tags:
- tech
title: "笔记"
updated: 2025-12-08
---
配置
YAML Key Sort:
enabled: true
sort_yaml_keys: true
3. 时间戳自动更新(最有用!)
作用:保存时自动更新 updated 字段
---
title: "我的笔记"
created: 2025-12-01 10:00:00
updated: 2025-12-08 14:30:45 # ✨ 自动更新为当前时间
---
配置
YAML Timestamp:
enabled: true
format: "YYYY-MM-DD HH:mm:ss" # 时间格式
key: "updated" # 字段名
insert_after: "created" # 在 created 后插入
4. 列表格式化(List Consistent Markers)
# ❌ 混乱标记
- 项目 1
* 项目 2
+ 项目 3
# ✅ 统一为 -
- 项目 1
- 项目 2
- 项目 3
5. 行末空格清理(Trailing Spaces)
# ❌ 行末有空格(看不见)
内容…[空格][空格]
# ✅ 删除空格
内容
6. 代码块语言标记
# ❌ 没有语言标记
function test() {}
# ✅ 有语言标记
```javascript
function test() {}
---
## 工作流示例
### 场景 1:维护一致的 YAML 元数据
**启用规则**
```yaml
YAML Key Sort: ✅
YAML Timestamp: ✅
效果
每次保存笔记:
1. YAML 字段自动按字母排序
2. updated 字段自动更新为当前时间
3. 确保所有笔记格式一致
配置示例
# 排序规则(自定义键顺序)
Yaml Key Sort Order:
- title
- created
- updated
- tags
- status
- description
场景 2:统一 Markdown 格式
启用规则
Heading Blank Lines: ✅
List Consistent Markers: ✅
Trailing Spaces: ✅
No Trailing Punctuation in Heading: ✅
效果
每次保存笔记:
1. 标题前后自动加空行
2. 列表标记统一为 -
3. 删除行末空格
4. 标题末尾无标点
场景 3:代码块格式化
启用规则
Code Block Language:
enabled: true
Paste as Plain Text:
enabled: true
常见问题
Q1:如何禁用某些规则?
方法 1:在 Settings 中关闭
Settings → Linter → 找到规则 → disable
方法 2:使用前置命令禁用(单个笔记)
---
lint_ignore:
- Heading Blank Lines
- YAML Key Sort
---
Q2:为什么时间戳没有更新?
原因 1:未启用规则
Settings → Linter → YAML Timestamp → enabled: true
原因 2:字段名不匹配
# ✅ 正确:使用插件指定的字段名
---
created: 2025-12-01 10:00:00
updated: 2025-12-08 14:30:45
---
# ❌ 错误:字段名不对
---
created_time: 2025-12-01
modified_time: 2025-12-08
---
原因 3:格式不匹配
检查时间格式是否与配置一致
Q3:Linter 删除了我想保留的空行?
解决方案
Settings → Linter → Two Spaces Between Lines → disabled
或者在笔记中添加:
---
lint_ignore:
- Two Spaces Between Lines
---
Q4:如何保留特定笔记的原始格式?
---
lint_ignore:
- Heading Blank Lines
- List Consistent Markers
- YAML Key Sort
---
Q5:代码块的语言标记被改错了怎么办?
Settings → Linter → Code Block Language
→ 配置要忽略的语言
或手动指定:
```javascript [keep]
// 加上 [keep] 防止被修改
---
## 完整规则列表
### Markdown 规则
| 规则 | 功能 | 推荐 |
|-----|------|------|
| Heading Blank Lines | 标题空行 | ✅ |
| List Consistent Markers | 列表标记统一 | ✅ |
| No Trailing Punctuation in Heading | 标题末无标点 | ✅ |
| Trailing Spaces | 删除行末空格 | ✅ |
| Two Spaces Between Lines | 段落间隔 | ⚠️ |
### YAML 规则
| 规则 | 功能 | 推荐 |
|-----|------|------|
| YAML Key Sort | YAML 排序 | ✅ |
| YAML Timestamp | 时间戳更新 | ✅ |
| YAML Title Alias | 标题别名 | ⚠️ |
### 代码规则
| 规则 | 功能 | 推荐 |
|-----|------|------|
| Code Block Language | 代码块语言 | ✅ |
| Paste as Plain Text | 纯文本粘贴 | ✅ |
---
## 最佳实践
1. **启用 Lint on Save**
- 自动保存时自动格式化
- 无需手动操作
2. **配置时间戳更新**
- 追踪笔记修改历史
- 便于知识库统计
3. **统一 YAML 排序**
- 提高可读性
- 便于版本控制
4. **定期检查日志**
Ctrl+Shift+I → Console 查看 Linter 的运行日志
5. **根据需求调整规则**
- 并非所有规则都适合所有人
- 测试找到最合适的配置
---
## 与其他插件的配合
**Templater + Linter**
- Templater 生成初始结构
- Linter 自动格式化和更新时间戳
**Periodic Notes + Linter**
- 生成日记时 Linter 自动规范格式
**Dataview + Linter**
- Linter 保持 YAML 格式一致
- Dataview 精准查询元数据
---
## 📚 相关文档
- [[templater-plugin-guide]] - 配合 Templater 创建规范化笔记
- [[periodic-notes-plugin-guide|Periodic Notes 插件详细指南]] - 自动生成周期笔记
- [[obsidian-writing-workflow]] - 完整的写作系统
---