Templater 函数速查表
这是 Obsidian Templater 插件的完整函数参考,包含所有内置函数和实用示例。
📋 目录
基础语法
模板基本结构
markdown
---
title: <% tp.file.title %>
date: <% tp.date.now("YYYY-MM-DD") %>
tags: []
---
# <% tp.file.title %>
创建时间: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>函数调用语法
markdown
<% tp.function_name() %> <!-- 无参数 -->
<% tp.function_name("参数") %> <!-- 单参数 -->
<% tp.function_name("参数1", "参数2") %> <!-- 多参数 -->
<% tp.function_name(param1, param2, ...) %> <!-- 变量参数 -->JavaScript 表达式
markdown
<% const today = tp.date.now("YYYY-MM-DD") %> <!-- 变量定义 -->
<%- tp.file.content %> <!-- 输出不转义 -->
<%_ 空白控制 _%> <!-- 控制空白 -->日期时间函数
tp.date.now() - 当前日期时间
markdown
<% tp.date.now() %> <!-- 默认格式 -->
<% tp.date.now("YYYY-MM-DD") %> <!-- 自定义格式 -->
<% tp.date.now("YYYY-MM-DD HH:mm:ss") %> <!-- 带时间 -->
<% tp.date.now("YYYY年MM月DD日") %> <!-- 中文格式 -->
<% tp.date.now("YYYY-MM-DD", 0, "Asia/Shanghai") %> <!-- 指定时区 -->tp.date.tomorrow() - 明天
markdown
<% tp.date.tomorrow() %> <!-- 明天日期 -->
<% tp.date.tomorrow("YYYY-MM-DD") %> <!-- 格式化 -->tp.date.yesterday() - 昨天
markdown
<% tp.date.yesterday() %> <!-- 昨天日期 -->
<% tp.date.yesterday("YYYY-MM-DD") %> <!-- 格式化 -->tp.date.weekday() - 指定星期
markdown
<% tp.date.weekday("YYYY-MM-DD", 0) %> <!-- 本周日 -->
<% tp.date.weekday("YYYY-MM-DD", 1) %> <!-- 本周一 -->
<% tp.date.weekday("YYYY-MM-DD", 6) %> <!-- 本周六 -->
<% tp.date.weekday("YYYY-MM-DD", 1, tp.date.now(), "weeks") %> <!-- 下周一 -->tp.date.weekstart() - 周开始日期
markdown
<% tp.date.weekstart("YYYY-MM-DD") %> <!-- 本周开始 -->
<% tp.date.weekstart("YYYY-MM-DD", 0) %> <!-- 从周日开始 -->tp.date.weekend() - 周结束日期
markdown
<% tp.date.weekend("YYYY-MM-DD") %> <!-- 本周结束 -->
<% tp.date.weekend("YYYY-MM-DD", 0) %> <!-- 周六结束 -->tp.date.monthstart() - 月开始日期
markdown
<% tp.date.monthstart("YYYY-MM-DD") %> <!-- 本月开始 -->tp.date.monthend() - 月结束日期
markdown
<% tp.date.monthend("YYYY-MM-DD") %> <!-- 本月结束 -->tp.date.yearstart() - 年开始日期
markdown
<% tp.date.yearstart("YYYY-MM-DD") %> <!-- 今年开始 -->tp.date.yearend() - 年结束日期
markdown
<% tp.date.yearend("YYYY-MM-DD") %> <!-- 今年结束 -->tp.duration() - 时间间隔
markdown
<% tp.duration("HH:mm:ss", 3600) %> <!-- 01:00:00 -->
<% tp.duration("HH:mm", 5400) %> <!-- 01:30 -->日期格式符号
| 符号 | 含义 | 示例 |
|---|---|---|
YYYY | 四位年份 | 2024 |
YY | 两位年份 | 24 |
MM | 两位月份 | 01-12 |
M | 月份 | 1-12 |
DD | 两位日期 | 01-31 |
D | 日期 | 1-31 |
HH | 24小时制 | 00-23 |
H | 24小时制 | 0-23 |
hh | 12小时制 | 01-12 |
h | 12小时制 | 1-12 |
mm | 分钟 | 00-59 |
ss | 秒 | 00-59 |
A | AM/PM | AM/PM |
a | am/pm | am/pm |
dddd | 星期全名 | Monday |
ddd | 星期缩写 | Mon |
dd | 星期 | Mo |
d | 星期数字 | 1-7 |
文件相关函数
tp.file.content - 文件内容
markdown
<% tp.file.content() %> <!-- 当前文件内容 -->tp.file.creation_date() - 创建日期
markdown
<% tp.file.creation_date() %> <!-- 创建日期 -->
<% tp.file.creation_date("YYYY-MM-DD") %> <!-- 格式化 -->tp.file.cursor() - 光标位置
markdown
<% tp.file.cursor() %> <!-- 光标位置1 -->
<% tp.file.cursor(1) %> <!-- 光标位置1 -->
<% tp.file.cursor(2) %> <!-- 光标位置2 -->
<% tp.file.cursor(3) %> <!-- 光标位置3 -->使用方式:
markdown
## 标题1
内容 <% tp.file.cursor(1) %>
## 标题2
内容 <% tp.file.cursor(2) %>tp.file.cursor_append() - 光标后追加
markdown
<% tp.file.cursor_append("要追加的内容") %>tp.file.exists() - 文件是否存在
markdown
<% tp.file.exists("文件名") %> <!-- 返回 true/false -->
<% tp.file.exists("文件夹/文件名") %>tp.file.folder() - 文件夹路径
markdown
<% tp.file.folder() %> <!-- 当前文件夹 -->
<% tp.file.folder(true) %> <!-- 相对路径 -->tp.file.include() - 包含文件
markdown
<% tp.file.include("模板名") %> <!-- 包含模板 -->
<% tp.file.include("[[模板名]]") %> <!-- Wiki链接格式 -->tp.file.last_modified_date() - 最后修改日期
markdown
<% tp.file.last_modified_date() %> <!-- 最后修改日期 -->
<% tp.file.last_modified_date("YYYY-MM-DD HH:mm") %> <!-- 格式化 -->tp.file.path() - 文件路径
markdown
<% tp.file.path() %> <!-- 完整路径 -->
<% tp.file.path(true) %> <!-- 相对路径 -->tp.file.rename() - 重命名文件
markdown
<% tp.file.rename("新文件名") %> <!-- 重命名文件 -->
<% tp.file.rename(tp.date.now("YYYY-MM-DD")) %> <!-- 用日期重命名 -->tp.file.selection() - 选中文本
markdown
<% tp.file.selection() %> <!-- 获取选中的文本 -->tp.file.tags - 文件标签
markdown
<% tp.file.tags %> <!-- 所有标签 -->
<% tp.file.tags.join(", ") %> <!-- 标签数组转字符串 -->tp.file.title - 文件标题
markdown
<% tp.file.title %> <!-- 文件名(无扩展名) -->文件夹相关函数
tp.folder.exists() - 文件夹是否存在
markdown
<% tp.folder.exists("文件夹名") %> <!-- 返回 true/false -->tp.folder.name - 文件夹名称
markdown
<% tp.folder.name %> <!-- 当前文件夹名 -->用户交互函数
tp.system.suggester() - 选择器
markdown
<% tp.system.suggester(["选项1", "选项2", "选项3"], ["值1", "值2", "值3"]) %>示例:
markdown
<%*
const status = tp.system.suggester(
["🔴 紧急", "🟡 重要", "🟢 普通"],
["紧急", "重要", "普通"],
false,
"选择优先级"
);
tR += `优先级: ${status}`;
%>tp.system.prompt() - 输入框
markdown
<% tp.system.prompt("请输入标题") %> <!-- 文本输入 -->
<% tp.system.prompt("请输入", "默认值") %> <!-- 带默认值 -->
<% tp.system.prompt("请输入", "", true) %> <!-- 多行输入 -->示例:
markdown
<%*
const title = tp.system.prompt("请输入笔记标题", tp.file.title);
const content = tp.system.prompt("请输入内容", "", true);
tR += `# ${title}\n\n${content}`;
%>tp.system.clipboard() - 剪贴板
markdown
<% tp.system.clipboard() %> <!-- 获取剪贴板内容 -->系统函数
tp.system.password() - 密码输入
markdown
<% tp.system.password("请输入密码") %> <!-- 遮罩输入 -->tp.system.context - 上下文
markdown
<% tp.system.context %> <!-- 上下文信息 -->Web 函数
tp.web.random_picture() - 随机图片
markdown
<% tp.web.random_picture() %> <!-- 随机图片 -->
<% tp.web.random_picture("200x300") %> <!-- 指定尺寸 -->
<% tp.web.random_picture("200x300", "关键词") %> <!-- 关键词搜索 -->
<% tp.web.random_picture("200x300", "nature,sky") %> <!-- 多关键词 -->tp.web.quote() - 随机引用
markdown
<% tp.web.quote() %> <!-- 随机引用 -->过滤器和转换器
toTitleCase - 标题格式
markdown
<% tp.file.title.toTitleCase() %> <!-- 首字母大写 -->toLowerCase - 小写
markdown
<% tp.file.title.toLowerCase() %> <!-- 转小写 -->toUpperCase - 大写
markdown
<% tp.file.title.toUpperCase() %> <!-- 转大写 -->replace - 替换
markdown
<% tp.file.title.replace("旧", "新") %> <!-- 替换文本 -->split - 分割
markdown
<% tp.file.title.split("-") %> <!-- 分割为数组 -->slice - 切片
markdown
<% tp.file.title.slice(0, 10) %> <!-- 前10个字符 -->trim - 去空格
markdown
<% tp.file.title.trim() %> <!-- 去除首尾空格 -->脚本模块
tp.user - 用户脚本
markdown
<% tp.user.my_script() %> <!-- 调用用户脚本 -->
<% tp.user.my_function("参数") %> <!-- 带参数调用 -->用户脚本示例
创建文件 Scripts/my_script.js:
javascript
function myFunction(tp, args) {
return `Hello, ${args.name}!`;
}
module.exports = myFunction;在模板中使用:
markdown
<% tp.user.my_script({name: "World"}) %>tp.obsidian - Obsidian API
markdown
<% tp.obsidian.api %> <!-- Obsidian API -->
<% tp.obsidian.app %> <!-- App 实例 -->tp.hook - 钩子
markdown
<% tp.hook.on_all_templates_executed(callback) %> <!-- 模板执行完成钩子 -->实战示例
📝 日记模板
markdown
---
title: <% tp.date.now("YYYY-MM-DD") %>
date: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
tags: [日记]
week: <% tp.date.weekstart("YYYY-MM-DD") %>
---
# <% tp.date.now("YYYY年MM月DD日 dddd") %>
## 📅 今日计划
<% tp.file.cursor(1) %>
## 📝 工作记录
<% tp.file.cursor(2) %>
## 💡 想法与灵感
<% tp.file.cursor(3) %>
## 📚 阅读笔记
<% tp.file.cursor(4) %>
## 📊 今日总结
<% tp.file.cursor(5) %>
---
创建时间: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>📋 会议记录模板
markdown
---
title: <% tp.system.prompt("会议主题", tp.file.title) %>
date: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
attendees: <% tp.system.prompt("参会人员(逗号分隔)") %>
location: <% tp.system.prompt("会议地点", "线上") %>
tags: [会议记录]
---
# <% tp.file.title %>
## 📌 会议信息
- **主题**: <% tp.file.title %>
- **时间**: <% tp.date.now("YYYY年MM月DD日 HH:mm") %>
- **地点**: <% tp.system.prompt("会议地点", "线上") %>
- **参会人员**: <% tp.system.prompt("参会人员(逗号分隔)") %>
## 📝 会议议程
1. <% tp.file.cursor(1) %>
## 💬 讨论内容
<% tp.file.cursor(2) %>
## ✅ 待办事项
- [ ] <% tp.file.cursor(3) %>
## 📎 相关资料
<% tp.file.cursor(4) %>
## 📌 下次会议
- **时间**:
- **议题**:
---
记录人: <% tp.system.prompt("记录人") %>📚 读书笔记模板
markdown
---
title: <% tp.system.prompt("书名") %>
author: <% tp.system.prompt("作者") %>
rating: <% tp.system.suggester(["⭐", "⭐⭐", "⭐⭐⭐", "⭐⭐⭐⭐", "⭐⭐⭐⭐⭐"], [1, 2, 3, 4, 5]) %>
status: <% tp.system.suggester(["在读", "已读", "想读"], ["在读", "已读", "想读"]) %>
start_date: <% tp.date.now("YYYY-MM-DD") %>
finish_date:
tags: [读书笔记]
---
# <% tp.file.title %>
## 📖 基本信息
| 项目 | 内容 |
|------|------|
| 书名 | <% tp.file.title %> |
| 作者 | <% tp.system.prompt("作者") %> |
| 评分 | <% tp.system.suggester(["⭐", "⭐⭐", "⭐⭐⭐", "⭐⭐⭐⭐", "⭐⭐⭐⭐⭐"], [1, 2, 3, 4, 5]) %> |
| 状态 | <% tp.system.suggester(["在读", "已读", "想读"], ["在读", "已读", "想读"]) %> |
| 开始日期 | <% tp.date.now("YYYY-MM-DD") %> |
| 完成日期 | |
## 📝 内容概要
<% tp.file.cursor(1) %>
## 💡 核心观点
1. <% tp.file.cursor(2) %>
## 🎯 金句摘录
> <% tp.file.cursor(3) %>
## 🤔 个人思考
<% tp.file.cursor(4) %>
## 📚 延伸阅读
<% tp.file.cursor(5) %>
---
创建时间: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>🎯 项目计划模板
markdown
---
title: <% tp.system.prompt("项目名称") %>
status: <% tp.system.suggester(["计划中", "进行中", "已完成", "已暂停"], ["计划中", "进行中", "已完成", "已暂停"]) %>
priority: <% tp.system.suggester(["🔴 高", "🟡 中", "🟢 低"], ["高", "中", "低"]) %>
start_date: <% tp.date.now("YYYY-MM-DD") %>
deadline: <% tp.system.prompt("截止日期", "YYYY-MM-DD") %>
tags: [项目]
---
# <% tp.file.title %>
## 📋 项目概述
**目标**: <% tp.system.prompt("项目目标") %>
**优先级**: <% tp.system.suggester(["🔴 高", "🟡 中", "🟢 低"], ["高", "中", "低"]) %>
**状态**: <% tp.system.suggester(["计划中", "进行中", "已完成", "已暂停"], ["计划中", "进行中", "已完成", "已暂停"]) %>
**时间**: <% tp.date.now("YYYY-MM-DD") %> - <% tp.system.prompt("截止日期", "YYYY-MM-DD") %>
## 🎯 关键里程碑
1. **阶段1**: <% tp.file.cursor(1) %>
- 开始:
- 结束:
- 状态:
2. **阶段2**:
- 开始:
- 结束:
- 状态:
## ✅ 任务清单
### 阶段1
- [ ] <% tp.file.cursor(2) %>
### 阶段2
- [ ]
## 📊 进度追踪
| 里程碑 | 计划日期 | 实际日期 | 状态 |
|--------|----------|----------|------|
| 阶段1 | | | 🟡 |
| 阶段2 | | | ⚪ |
## 🚧 风险与障碍
<% tp.file.cursor(3) %>
## 📝 会议记录
<% tp.file.cursor(4) %>
## 📎 相关资源
<% tp.file.cursor(5) %>
---
创建时间: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>📰 文章笔记模板
markdown
---
title: <% tp.system.prompt("文章标题") %>
source: <% tp.system.prompt("来源链接") %>
author: <% tp.system.prompt("作者") %>
date_saved: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
tags: [文章笔记]
---
# <% tp.file.title %>
## 📰 文章信息
- **标题**: <% tp.file.title %>
- **作者**: <% tp.system.prompt("作者") %>
- **来源**: [<% tp.system.prompt("来源网站") %>](<% tp.system.prompt("来源链接") %>)
- **保存日期**: <% tp.date.now("YYYY-MM-DD") %>
## 📝 摘要
<% tp.file.cursor(1) %>
## 💡 核心观点
1. <% tp.file.cursor(2) %>
## 🎯 重点摘录
> <% tp.file.cursor(3) %>
## 🤔 个人见解
<% tp.file.cursor(4) %>
## 🔗 相关笔记
<% tp.file.cursor(5) %>
---
原始链接: <% tp.system.prompt("来源链接") %>🎤 访谈记录模板
markdown
---
title: 访谈:<% tp.system.prompt("受访者姓名") %>
date: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
interviewee: <% tp.system.prompt("受访者姓名") %>
interviewer: <% tp.system.prompt("采访者姓名") %>
location: <% tp.system.prompt("访谈地点", "线上") %>
tags: [访谈记录]
---
# 访谈:<% tp.system.prompt("受访者姓名") %>
## 📌 基本信息
| 项目 | 内容 |
|------|------|
| 受访者 | <% tp.system.prompt("受访者姓名") %> |
| 采访者 | <% tp.system.prompt("采访者姓名") %> |
| 时间 | <% tp.date.now("YYYY年MM月DD日 HH:mm") %> |
| 地点 | <% tp.system.prompt("访谈地点", "线上") %> |
| 时长 | <% tp.system.prompt("访谈时长", "30分钟") %> |
## 🎯 访谈目的
<% tp.system.prompt("访谈目的") %>
## 📋 访谈提纲
1. <% tp.file.cursor(1) %>
## 💬 访谈记录
### 问题1:
**回答**: <% tp.file.cursor(2) %>
### 问题2:
**回答**: <% tp.file.cursor(3) %>
### 问题3:
**回答**: <% tp.file.cursor(4) %>
## 📊 关键发现
1. <% tp.file.cursor(5) %>
## 💡 个人反思
<% tp.file.cursor(6) %>
## 📎 相关资料
<% tp.file.cursor(7) %>
---
整理时间: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>📊 周报模板
markdown
---
title: 周报-<% tp.date.weekstart("YYYY-MM-DD") %>至<% tp.date.weekend("YYYY-MM-DD") %>
date: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
week: <% tp.date.weekstart("YYYY-MM-DD") %>
tags: [周报]
---
# 周报 <% tp.date.weekstart("YYYY-MM-DD") %> - <% tp.date.weekend("YYYY-MM-DD") %>
## 📊 本周概览
- **本周目标**: <% tp.file.cursor(1) %>
- **完成情况**:
- **整体评价**:
## ✅ 已完成任务
<% tp.file.cursor(2) %>
## 🔄 进行中任务
<% tp.file.cursor(3) %>
## 📅 下周计划
<% tp.file.cursor(4) %>
## 💡 收获与成长
<% tp.file.cursor(5) %>
## 🚧 遇到的问题
<% tp.file.cursor(6) %>
## 📚 学习与阅读
<% tp.file.cursor(7) %>
## 📝 其他事项
<% tp.file.cursor(8) %>
---
生成时间: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>高级技巧
条件判断
markdown
<%*
const priority = tp.system.suggester(["高", "中", "低"], ["高", "中", "低"]);
if (priority === "高") {
tR += "🔴 **优先级: 高**";
} else if (priority === "中") {
tR += "🟡 **优先级: 中**";
} else {
tR += "🟢 **优先级: 低**";
}
%>循环结构
markdown
<%*
const items = ["项目1", "项目2", "项目3"];
for (let i = 0; i < items.length; i++) {
tR += `${i + 1}. ${items[i]}\n`;
}
%>动态生成表格
markdown
<%*
const rows = 3;
const cols = 4;
tR += "| ";
for (let j = 0; j < cols; j++) {
tR += `列${j + 1} | `;
}
tR += "\n";
tR += "|";
for (let j = 0; j < cols; j++) {
tR += "---|";
}
tR += "\n";
for (let i = 0; i < rows; i++) {
tR += "| ";
for (let j = 0; j < cols; j++) {
tR += `内容 | `;
}
tR += "\n";
}
%>调用其他模板
markdown
<%*
// 包含其他模板
tR += tp.file.include("日记模板");
%>文件操作
markdown
<%*
// 重命名文件
await tp.file.rename(tp.date.now("YYYY-MM-DD") + "-" + tp.file.title);
// 移动文件到特定文件夹
await tp.file.move("归档/" + tp.file.title);
%>相关资源
💡 提示
将此页面添加到书签,随时查阅!Templater 功能强大,建议从简单模板开始逐步掌握。