Skip to content

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
HH24小时制00-23
H24小时制0-23
hh12小时制01-12
h12小时制1-12
mm分钟00-59
ss00-59
AAM/PMAM/PM
aam/pmam/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 功能强大,建议从简单模板开始逐步掌握。

最后更新:2026年3月13日编辑此页反馈问题