--- title: Templater 使用指南 created: 2026-01-05 updated: 2026-01-05 tags: - obsidian - templater - guide - reference type: reference --- # 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") %>