2026-01-06 14:16:07 +08:00
|
|
|
|
---
|
|
|
|
|
|
title: Templater 使用指南
|
|
|
|
|
|
created: 2026-01-05
|
|
|
|
|
|
updated: 2026-01-05
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- obsidian
|
|
|
|
|
|
- templater
|
|
|
|
|
|
- guide
|
|
|
|
|
|
- reference
|
|
|
|
|
|
type: reference
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-01-05 19:25:56 +08:00
|
|
|
|
# Templater 使用指南
|
|
|
|
|
|
|
|
|
|
|
|
## 什么是 Templater?
|
|
|
|
|
|
|
|
|
|
|
|
Templater 是 Obsidian 最强大的模板插件,它允许你创建动态模板,使用变量、函数和命令来自动化你的笔记创建流程。
|
|
|
|
|
|
|
|
|
|
|
|
## 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 基本语法
|
|
|
|
|
|
|
|
|
|
|
|
Templater 使用 `<% %>` 标签来执行代码:
|
|
|
|
|
|
|
|
|
|
|
|
- `<% code %>` - 执行代码但不输出
|
|
|
|
|
|
- `<%= value %>` - 执行代码并输出结果
|
|
|
|
|
|
- `<%* async code %>` - 执行异步代码
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 内置变量
|
|
|
|
|
|
|
|
|
|
|
|
#### 日期和时间
|
|
|
|
|
|
```
|
|
|
|
|
|
<% tp.date.now("YYYY-MM-DD") %> # 当前日期:2026-01-05
|
|
|
|
|
|
<% tp.date.now("HH:mm") %> # 当前时间:14:30
|
|
|
|
|
|
<% tp.date.now("YYYY-MM-DD HH:mm:ss") %> # 完整时间戳
|
|
|
|
|
|
<% tp.date.tomorrow("YYYY-MM-DD") %> # 明天的日期
|
|
|
|
|
|
<% tp.date.yesterday("YYYY-MM-DD") %> # 昨天的日期
|
|
|
|
|
|
<% tp.date.weekday("YYYY-MM-DD", 0) %> # 本周日(0=周日)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 文件信息
|
|
|
|
|
|
```
|
|
|
|
|
|
<% tp.file.title %> # 当前文件标题(不含扩展名)
|
|
|
|
|
|
<% tp.file.creation_date() %> # 文件创建日期
|
|
|
|
|
|
<% tp.file.folder() %> # 文件所在文件夹
|
|
|
|
|
|
<% tp.file.path() %> # 文件完整路径
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 配置信息
|
|
|
|
|
|
```
|
|
|
|
|
|
<% tp.config.active_file.basename %> # 活动文件名
|
|
|
|
|
|
<% tp.config.active_file.path %> # 活动文件路径
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 常用命令
|
|
|
|
|
|
|
|
|
|
|
|
#### 文件操作
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 创建新笔记
|
|
|
|
|
|
<%* await tp.file.create_new("模板名", "新文件名", false, "目标文件夹") %>
|
|
|
|
|
|
|
|
|
|
|
|
// 移动文件
|
|
|
|
|
|
<%* await tp.file.move("新路径/新文件名") %>
|
|
|
|
|
|
|
|
|
|
|
|
// 重命名文件
|
|
|
|
|
|
<%* await tp.file.rename("新文件名") %>
|
|
|
|
|
|
|
|
|
|
|
|
// 包含其他文件
|
|
|
|
|
|
<% tp.file.include("[[其他笔记名称]]") %>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 用户输入
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 提示用户输入
|
|
|
|
|
|
<% tp.system.prompt("请输入项目名称") %>
|
|
|
|
|
|
|
|
|
|
|
|
// 建议列表(下拉选择)
|
|
|
|
|
|
<% tp.system.suggester(["选项1", "选项2", "选项3"], ["value1", "value2", "value3"]) %>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 实用示例
|
|
|
|
|
|
|
|
|
|
|
|
#### 示例1:每日笔记模板
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
---
|
|
|
|
|
|
date: <% tp.date.now("YYYY-MM-DD") %>
|
|
|
|
|
|
day: <% tp.date.now("dddd") %>
|
|
|
|
|
|
week: <% tp.date.now("YYYY-[W]WW") %>
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# <% tp.date.now("YYYY-MM-DD dddd") %>
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 今日任务
|
|
|
|
|
|
- [ ]
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 笔记
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 重点事项
|
|
|
|
|
|
|
|
|
|
|
|
## 💡 想法与灵感
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
← [[<% tp.date.yesterday("YYYY-MM-DD") %>]] | [[<% tp.date.tomorrow("YYYY-MM-DD") %>]] →
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 示例2:项目笔记模板
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
---
|
|
|
|
|
|
type: project
|
|
|
|
|
|
created: <% tp.date.now("YYYY-MM-DD") %>
|
|
|
|
|
|
status: active
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# <% tp.system.prompt("项目名称") %>
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 项目概述
|
|
|
|
|
|
<% tp.system.prompt("项目简介") %>
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 目标
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
## 📅 关键时间节点
|
|
|
|
|
|
- 开始时间:<% tp.date.now("YYYY-MM-DD") %>
|
|
|
|
|
|
- 截止时间:
|
|
|
|
|
|
|
|
|
|
|
|
## 👥 相关人员
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
## 📎 相关资源
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 进展记录
|
|
|
|
|
|
|
|
|
|
|
|
### <% tp.date.now("YYYY-MM-DD") %>
|
|
|
|
|
|
-
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 示例3:会议记录模板
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
---
|
|
|
|
|
|
type: meeting
|
|
|
|
|
|
date: <% tp.date.now("YYYY-MM-DD HH:mm") %>
|
|
|
|
|
|
participants:
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 会议记录 - <% tp.system.prompt("会议主题") %>
|
|
|
|
|
|
|
|
|
|
|
|
**时间**:<% tp.date.now("YYYY-MM-DD HH:mm") %>
|
|
|
|
|
|
**地点**:<% tp.system.prompt("会议地点") %>
|
|
|
|
|
|
**参与者**:
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 议程
|
|
|
|
|
|
1.
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 讨论内容
|
|
|
|
|
|
|
|
|
|
|
|
## ✅ 行动项
|
|
|
|
|
|
- [ ]
|
|
|
|
|
|
|
|
|
|
|
|
## 🔗 相关资料
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 如何使用
|
|
|
|
|
|
|
|
|
|
|
|
### 方法1:快捷键触发
|
|
|
|
|
|
1. 打开设置 → 快捷键
|
|
|
|
|
|
2. 搜索 "Templater: Insert Template"
|
|
|
|
|
|
3. 设置一个快捷键(如 `Ctrl/Cmd + T`)
|
|
|
|
|
|
4. 在笔记中按快捷键选择模板
|
|
|
|
|
|
|
|
|
|
|
|
### 方法2:命令面板
|
|
|
|
|
|
1. 按 `Ctrl/Cmd + P` 打开命令面板
|
|
|
|
|
|
2. 输入 "Templater"
|
|
|
|
|
|
3. 选择 "Templater: Insert Template"
|
|
|
|
|
|
4. 选择要插入的模板
|
|
|
|
|
|
|
|
|
|
|
|
### 方法3:创建新笔记时自动应用
|
|
|
|
|
|
1. 在设置中配置 "Folder Templates"
|
|
|
|
|
|
2. 为不同文件夹指定默认模板
|
|
|
|
|
|
3. 在该文件夹创建新笔记时自动应用模板
|
|
|
|
|
|
|
|
|
|
|
|
## 配置建议
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 创建模板文件夹
|
|
|
|
|
|
建议在 `06_Metadata/Templates` 下创建所有模板文件
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Templater 设置
|
|
|
|
|
|
- **Template folder location**: `06_Metadata/Templates`
|
|
|
|
|
|
- **Trigger Templater on new file creation**: ✓ 启用
|
|
|
|
|
|
- **Enable folder templates**: ✓ 启用
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 文件夹模板映射示例
|
|
|
|
|
|
| 文件夹 | 模板 |
|
|
|
|
|
|
|--------|------|
|
|
|
|
|
|
| `00_Inbox` | `quick-note.md` |
|
|
|
|
|
|
| `01_Projects` | `project.md` |
|
|
|
|
|
|
| `02_Areas` | `area.md` |
|
|
|
|
|
|
| `06_Metadata/Daily` | `daily-note.md` |
|
|
|
|
|
|
|
|
|
|
|
|
## 进阶技巧
|
|
|
|
|
|
|
|
|
|
|
|
### 1. JavaScript 代码块
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
<%*
|
|
|
|
|
|
// 可以写多行 JavaScript 代码
|
|
|
|
|
|
const projectName = await tp.system.prompt("项目名称");
|
|
|
|
|
|
const status = await tp.system.suggester(
|
|
|
|
|
|
["进行中", "计划中", "已完成"],
|
|
|
|
|
|
["active", "planned", "completed"]
|
|
|
|
|
|
);
|
|
|
|
|
|
tR += `项目:${projectName}\n状态:${status}`;
|
|
|
|
|
|
%>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 条件逻辑
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
<%* if (tp.file.folder().includes("Projects")) { %>
|
|
|
|
|
|
这是一个项目笔记
|
|
|
|
|
|
<%* } else { %>
|
|
|
|
|
|
这是一个普通笔记
|
|
|
|
|
|
<%* } %>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 循环生成内容
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
<%* for (let i = 1; i <= 5; i++) { %>
|
|
|
|
|
|
## 第 <%= i %> 部分
|
|
|
|
|
|
<%* } %>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 模板不生效?
|
|
|
|
|
|
A: 检查 Templater 设置中的模板文件夹路径是否正确
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 如何在已有笔记中插入模板?
|
|
|
|
|
|
A: 使用命令 "Templater: Insert Template" 或快捷键
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 可以创建自定义函数吗?
|
|
|
|
|
|
A: 可以!在 Templater 设置中配置 "User Scripts" 文件夹
|
|
|
|
|
|
|
|
|
|
|
|
## 相关资源
|
|
|
|
|
|
|
|
|
|
|
|
- 官方文档:https://silentvoid13.github.io/Templater/
|
|
|
|
|
|
- 示例模板库:查看 `06_Metadata/Templates/` 文件夹
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**标签**:#教程 #Templater #Obsidian #模板
|
|
|
|
|
|
**创建日期**:<% tp.date.now("YYYY-MM-DD") %>
|