File Module
This module contains every internal function related to files.
- Documentation
tp.file.content
tp.file.create_new(template: TFile ⎮ string, filename?: string, open_new: boolean = false, folder?: TFolder | string)
tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")
tp.file.cursor(order?: number)
tp.file.cursor_append(content: string)
tp.file.exists(filepath: string)
tp.file.find_tfile(filename: string)
tp.file.folder(absolute: boolean = false)
tp.file.include(include_link: string ⎮ TFile)
tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")
tp.file.move(new_path: string, file_to_move?: TFile)
tp.file.path(relative: boolean = false)
tp.file.rename(new_title: string)
tp.file.selection()
tp.file.tags
tp.file.title
- Examples
Documentation
Function documentation is using a specific syntax. More information here.
tp.file.content
The string contents of the file at the time that Templater was executed. Manipulating this string will not update the current file.
Examples
// Retrieve file content
<% tp.file.content %>
tp.file.create_new(template: TFile ⎮ string, filename?: string, open_new: boolean = false, folder?: TFolder | string)
Creates a new file using a specified template or with a specified content.
Arguments
-
template
: Either the template used for the new file content, or the file content as a string. If it is the template to use, you retrieve it withtp.file.find_tfile(TEMPLATENAME)
. -
filename
: The filename of the new file, defaults to "Untitled". -
open_new
: Whether to open or not the newly created file. Warning: if you use this option, since commands are executed asynchronously, the file can be opened first and then other commands are appended to that new file and not the previous file. -
folder
: The folder to put the new file in, defaults to Obsidian's default location. If you want the file to appear in a different folder, specify it with"PATH/TO/FOLDERNAME"
orapp.vault.getAbstractFileByPath("PATH/TO/FOLDERNAME")
.
Examples
// File creation
<%* await tp.file.create_new("MyFileContent", "MyFilename") %>
// File creation with template
<%* await tp.file.create_new(tp.file.find_tfile("MyTemplate"), "MyFilename") %>
// File creation and open created note
<%* await tp.file.create_new("MyFileContent", "MyFilename", true) %>
// File creation in current folder
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, tp.file.folder(true)) %>
// File creation in specified folder with string path
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, "Path/To/MyFolder") %>
// File creation in specified folder with TFolder
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, app.vault.getAbstractFileByPath("MyFolder")) %>
// File creation and append link to current note
[[<% (await tp.file.create_new("MyFileContent", "MyFilename")).basename %>]]
tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")
Retrieves the file's creation date.
Arguments
format
: The format for the date. Defaults to"YYYY-MM-DD HH:mm"
. Refer to format reference.
Examples
// File creation date
<% tp.file.creation_date() %>
// File creation date with format
<% tp.file.creation_date("dddd Do MMMM YYYY HH:mm") %>
tp.file.cursor(order?: number)
Sets the cursor to this location after the template has been inserted.
You can navigate between the different cursors using the configured hotkey in Obsidian settings.
Arguments
order
: The order of the different cursors jump, e.g. it will jump from 1 to 2 to 3, and so on. If you specify multiple tp.file.cursor with the same order, the editor will switch to multi-cursor.
Examples
// File cursor
<% tp.file.cursor() %>
// File multi-cursor
<% tp.file.cursor(1) %>Content<% tp.file.cursor(1) %>
tp.file.cursor_append(content: string)
Appends some content after the active cursor in the file.
Arguments
content
: The content to append after the active cursor.
Examples
// File cursor append
<% tp.file.cursor_append("Some text") %>
tp.file.exists(filepath: string)
Check to see if a file exists by it's file path. The full path to the file, relative to the Vault and containing the extension, must be provided.
Arguments
filepath
: The full file path of the file we want to check existence for.
Examples
// File existence
<% await tp.file.exists("MyFolder/MyFile.md") %>
// File existence of current file
<% await tp.file.exists(tp.file.folder(true) + "/" + tp.file.title + ".md") %>
tp.file.find_tfile(filename: string)
Search for a file and returns its TFile
instance.
Arguments
filename
: The filename we want to search and resolve as aTFile
.
Examples
// File find TFile
<% tp.file.find_tfile("MyFile").basename %>
tp.file.folder(absolute: boolean = false)
Retrieves the file's folder name.
Arguments
absolute
: If set totrue
, returns the vault-absolute path of the folder. Iffalse
, only returns the basename of the folder (the last part). Defaults tofalse
.
Examples
// File folder (Folder)
<% tp.file.folder() %>
// File folder with vault-absolute path (Path/To/Folder)
<% tp.file.folder(true) %>
tp.file.include(include_link: string ⎮ TFile)
Includes the file's link content. Templates in the included content will be resolved.
Arguments
include_link
: The link to the file to include, e.g."[[MyFile]]"
, or a TFile object. Also supports sections or blocks inclusions.
Examples
// File include
<% tp.file.include("[[Template1]]") %>
// File include TFile
<% tp.file.include(tp.file.find_tfile("MyFile")) %>
// File include section
<% tp.file.include("[[MyFile#Section1]]") %>
// File include block
<% tp.file.include("[[MyFile#^block1]]") %>
tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")
Retrieves the file's last modification date.
Arguments
format
: The format for the date. Defaults to"YYYY-MM-DD HH:mm"
. Refer to format reference.
Examples
// File last modified date
<% tp.file.last_modified_date() %>
// File last modified date with format
<% tp.file.last_modified_date("dddd Do MMMM YYYY HH:mm") %>
tp.file.move(new_path: string, file_to_move?: TFile)
Moves the file to the desired vault location.
Arguments
-
new_path
: The new vault relative path of the file, without the file extension. Note: the new path needs to include the folder and the filename, e.g."/Notes/MyNote"
. -
file_to_move
: The file to move, defaults to the current file.
Examples
// File move
<% await tp.file.move("/A/B/" + tp.file.title) %>
// File move and rename
<% await tp.file.move("/A/B/NewTitle") %>
tp.file.path(relative: boolean = false)
Retrieves the file's absolute path on the system.
Arguments
relative
: If set totrue
, only retrieves the vault's relative path.
Examples
// File path
<% tp.file.path() %>
// File relative path (relative to vault root)
<% tp.file.path(true) %>
tp.file.rename(new_title: string)
Renames the file (keeps the same file extension).
Arguments
new_title
: The new file title.
Examples
// File rename
<% await tp.file.rename("MyNewName") %>
// File append a 2 to the file name
<% await tp.file.rename(tp.file.title + "2") %>
tp.file.selection()
Retrieves the active file's text selection.
Examples
// File selection
<% tp.file.selection() %>
tp.file.tags
Retrieves the file's tags (array of string).
Examples
// File tags
<% tp.file.tags %>
tp.file.title
Retrieves the file's title.
Examples
// File title
<% tp.file.title %>
// Strip the Zettelkasten ID of title (if space separated)
<% tp.file.title.split(" ")[1] %>
Examples
// Retrieve file content
<% tp.file.content %>
// File creation
<%* await tp.file.create_new("MyFileContent", "MyFilename") %>
// File creation with template
<%* await tp.file.create_new(tp.file.find_tfile("MyTemplate"), "MyFilename") %>
// File creation and open created note
<%* await tp.file.create_new("MyFileContent", "MyFilename", true) %>
// File creation in current folder
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, tp.file.folder(true)) %>
// File creation in specified folder with string path
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, "Path/To/MyFolder") %>
// File creation in specified folder with TFolder
<%* await tp.file.create_new("MyFileContent", "MyFilename", false, app.vault.getAbstractFileByPath("MyFolder")) %>
// File creation and append link to current note
[[<% (await tp.file.create_new("MyFileContent", "MyFilename")).basename %>]]
// File creation date
<% tp.file.creation_date() %>
// File creation date with format
<% tp.file.creation_date("dddd Do MMMM YYYY HH:mm") %>
// File cursor
<% tp.file.cursor() %>
// File multi-cursor
<% tp.file.cursor(1) %>Content<% tp.file.cursor(1) %>
// File cursor append
<% tp.file.cursor_append("Some text") %>
// File existence
<% await tp.file.exists("MyFolder/MyFile.md") %>
// File existence of current file
<% await tp.file.exists(tp.file.folder(true) + "/" + tp.file.title + ".md") %>
// File find TFile
<% tp.file.find_tfile("MyFile").basename %>
// File folder (Folder)
<% tp.file.folder() %>
// File folder with vault-absolute path (Path/To/Folder)
<% tp.file.folder(true) %>
// File include
<% tp.file.include("[[Template1]]") %>
// File include TFile
<% tp.file.include(tp.file.find_tfile("MyFile")) %>
// File include section
<% tp.file.include("[[MyFile#Section1]]") %>
// File include block
<% tp.file.include("[[MyFile#^block1]]") %>
// File last modified date
<% tp.file.last_modified_date() %>
// File last modified date with format
<% tp.file.last_modified_date("dddd Do MMMM YYYY HH:mm") %>
// File move
<% await tp.file.move("/A/B/" + tp.file.title) %>
// File move and rename
<% await tp.file.move("/A/B/NewTitle") %>
// File path
<% tp.file.path() %>
// File relative path (relative to vault root)
<% tp.file.path(true) %>
// File rename
<% await tp.file.rename("MyNewName") %>
// File append a 2 to the file name
<% await tp.file.rename(tp.file.title + "2") %>
// File selection
<% tp.file.selection() %>
// File tags
<% tp.file.tags %>
// File title
<% tp.file.title %>
// Strip the Zettelkasten ID of title (if space separated)
<% tp.file.title.split(" ")[1] %>