news 2026/8/19 18:40:52

Templater 插件入门指南:让 Obsidian 模板学会自动填表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Templater 插件入门指南:让 Obsidian 模板学会自动填表

Templater 插件入门指南:让 Obsidian 模板学会自动填表

【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater

周一早上,你打开 Obsidian 准备新建一篇复盘笔记:先敲下标题,再手动输入当天的日期,然后回忆着补上"这周完成了什么、下周计划做什么"几个固定栏目。这样的动作,你可能已经重复了十几遍,每次都在做几乎一样的机械劳动。Templater正是为解决这类问题而生的 Obsidian 模板插件——它把"写模板"升级成"设计一条自动填表的流水线",让日期、标题、文件信息、甚至需要你现场决定的选项,全部由插件替你完成。

上图就是 Templater 的设置面板,你可以在这里看到模板的触发方式与模板内容。不用慌,本文会从零开始,用 5 个高频问题带你走完"安装→理解语法→动手实战"的全过程。

为什么普通模板满足不了我?

Obsidian 本身支持"模板"功能,但它只能插入一段写死的文本:今天日期不会自动更新,标题不会自动带入,更不可能在创建笔记时弹出问题问你"今天心情如何"。

Templater 的核心优势,是它的命令标签<% ... %>。你可以把模板想象成一张会"看图说话"的表格:遇到<% 内容 %>这种带开关的格子,插件就会执行里面的逻辑,把结果替换进正文。所以同样一份模板,不同日期、不同文件下使用,产出完全不一样。

第一条命令怎么落地?

在动手前,先记住一个总开关:所有命令都必须用<%开头、%>结尾。里面的内容,通常是一个以tp.开头的调用,就像下面这样:

<% tp.date.now("YYYY-MM-DD") %>

这句话的意思是:调用日期模块的now函数,按YYYY-MM-DD的格式输出今天的日期,运行结果会自动替换进模板正文,比如生成2026-08-18。整个过程不需要你手输任何东西。

在 Obsidian 的"设置 → 核心插件"中启用 Templater 后,你可以先建一个测试笔记,把上面那行命令粘进去,再通过命令面板执行"插入模板",看看效果。这一步能帮你建立"命令会被执行并替换"的第一直觉,后面所有内容都是在这个直觉上叠加。

插入日期、标题和文件信息,最快的方式是什么?

日常用得最多的三个小工具,分别是日期、文件信息和 frontmatter(笔记开头的属性区)。

日期tp.date.now支持格式化符号,常见写法如下。

想要的效果命令写法
今天日期<% tp.date.now("YYYY-MM-DD") %>
带星期几<% tp.date.now("dddd, MMMM Do YYYY") %>
7 天后的日期<% tp.date.now("YYYY-MM-DD", 7) %>

第二个参数是偏移量,传7就是加 7 天,传-1就是昨天,很适合做"明天要做的事""上周回顾"这类内容。

文件信息tp.file.title返回当前文件名,tp.file.path返回完整路径,tp.file.folder返回所在文件夹。比如标题栏可以直接写:

# <% tp.file.title %>

frontmatter:模板开头经常有一段---包裹的属性区,你可以让属性值也动态生成,比如:

--- 创建时间: <% tp.date.now("YYYY-MM-DD HH:mm") %>

⚠️常见坑tp.date.now的格式化符号是自定义语法,不是标准的YYYY-MM-DD都支持的通用写法,注意大小写,写错会输出很奇怪的结果。先复制官方文档里的示例跑通,再改自己的格式。

想弹出问题让用户选择,prompt 和 suggester 怎么用?

自动化并不意味着所有内容都由程序决定。有些信息只有你自己知道,这时候就该让模板"停下来问你"。

Templater 的系统模块提供了两个提问工具:tp.system.prompt弹出一个输入框,tp.system.suggester弹出一个候选列表让你选。

<% await tp.system.prompt("今天最想记录的一件事") %> <% tp.system.suggester(["开心", "平静", "疲惫"], ["happy", "calm", "tired"]) %>

上面第二行里,第一个数组是显示给用户看的选项,第二个数组是选中后真正写入笔记的值。这样你既可以让用户友好地选中文,又能在 frontmatter 里存下英文标签,一举两得。

⚠️必须写 awaitpromptsuggester都是异步函数,前面漏了await,变量接到的会是undefined,而且模板不会等待你输入就直接跑完。这是新手最容易踩的坑,没有之一。

💡小贴士:这类带交互的代码,建议放在<%* ... %>执行命令里,配合下面的tR变量一起用,可读性会好很多。

复杂逻辑怎么写?执行命令和 tR 变量是什么?

插值命令<% %>只适合"输出一个表达式结果"。当你想写 if 判断、循环、多步计算时,要用执行命令<%* %>,它执行一段 JavaScript 代码,默认不输出任何东西。

想在执行命令里输出内容,靠的是内置变量tR——它是"最终生成的文本"的容器,你用+=往里面追加内容,就会出现在笔记里:

<%* const hour = tp.date.now("H"); tR += hour < 12 ? "早上好" : hour < 18 ? "下午好" : "晚上好"; tR += ",今天是 " + tp.date.now("YYYY-MM-DD"); %>

这段代码读取当前小时,判断上午/下午,再拼上日期一起输出。执行命令能访问 Obsidian 的全局对象app,以及moment等库,能力几乎等同于在浏览器控制台里写 JS。

⚠️常见坑:执行命令会吃掉周围的换行,导致笔记顶部出现大片空行。解决方案是给命令标签末尾加一个短横线-%>,它会吞掉命令后紧跟的那一个换行符。这是官方专门提供的"空白控制"语法,模板排版乱掉时优先检查这里。

<%* if (tp.file.title.startsWith("复盘")) { -%> 这是一篇复盘笔记 <%* } -%>

一个完整实战:把知识点串成一套周复盘模板

下面这个模板把前面的东西全用上了:frontmatter 记录元信息、prompt 收集用户输入、suggester 做选项、执行命令做日期计算、tR控制输出。把它保存为模板文件,每周新建时只需回答几个问题,整篇笔记就自动成型。

--- 周次: <% tp.date.now("YYYY年第ww周") %> 心情: <% await tp.system.suggester(["很充实", "一般般", "有点累"], ["great", "ok", "tired"]) %> --- # 第 <% tp.date.now("ww") %> 周复盘 ## 本周三件大事 1. <% await tp.system.prompt("第一件大事") %> 2. <% await tp.system.prompt("第二件大事") %> 3. <% await tp.system.prompt("第三件大事") %> ## 下周目标 - [ ] <%* const start = tp.date.now("YYYY-MM-DD", -6); tR += `本周起始日:${start},记得对照目标逐项打勾。`; -%>

执行时,Templater 会依次弹框收集"三件大事",心情选项提供中文标签,最后自动补上一句带本周起始日期的提醒,全程不需要你手动敲任何重复文字。

立即上手的 3 步,以及几个快问快答

别急着看完所有文档,按下面三步先跑起来:

  1. 装好并指向模板文件夹:启用插件后,在设置里把"模板文件夹位置"指向你放模板的目录。
  2. 抄一条跑通:新建模板文件,粘贴<% tp.date.now("YYYY-MM-DD") %>,用"插入模板"命令试一次,确认输出正确。
  3. 从真实需求出发:找出你重复最多的 3 篇笔记,用本文提到的最多 3 个函数(date、file、prompt)分别改造成模板,就足够日常用了。

快问快答

  • :插值命令想输出结果,为什么没反应?:检查标签是不是写成了<%*,执行命令默认不输出;要输出请改用<% %>
  • :模板执行后满屏空行怎么办?:在命令标签尾部加-%>,消除命令产生的多余换行。
  • :想复用一段复杂的 JS 逻辑?:把它封装成"用户函数",在设置里注册后,就能像tp.date.now一样被调用,一份逻辑多处使用。
  • :预览时希望内容自动刷新?:可以用动态命令<%+,但刷新依赖缓存,且官方建议优先考虑 Dataview 插件,动态命令要克制使用。

Templater 的学习曲线并不陡:先记住<% %>这个开关,再认识tp.datetp.filetp.system三个最常用的模块,你的笔记系统就已经比 90% 的 Obsidian 用户自动化了。剩下的,就是在你最痛的那篇模板上,动手改造第一条命令。

【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 18:39:22

NeoEloquent 软删除详解:如何安全地删除图数据库节点

NeoEloquent 软删除详解&#xff1a;如何安全地删除图数据库节点 【免费下载链接】NeoEloquent The Neo4j OGM for Laravel 项目地址: https://gitcode.com/gh_mirrors/ne/NeoEloquent 在开发基于 Neo4j 的 Laravel 应用时&#xff0c;NeoEloquent 软删除&#xff08;So…

作者头像 李华
网站建设 2026/8/19 18:29:45

图像格式转换如何一键搞定?oiiotool入门实操全指南

图像格式转换如何一键搞定&#xff1f;oiiotool入门实操全指南 【免费下载链接】OpenImageIO Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications. 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/8/19 18:27:04

Bluto性能调优:3个技巧缩短子域名爆破扫描时间

Bluto性能调优&#xff1a;3个技巧缩短子域名爆破扫描时间 【免费下载链接】Bluto DNS Recon | Brute Forcer | DNS Zone Transfer | DNS Wild Card Checks | DNS Wild Card Brute Forcer | Email Enumeration | Staff Enumeration | Compromised Account Checking 项目地址:…

作者头像 李华