Obs139|5個方便維護Properties的外掛:Linter、TagMany、File Cooker、Tag Wrangler、Templater Hotkeys

Obsidian v1.4提供了視覺化YAML欄位(特性)的輸入介面,大幅簡化了筆記Metadata(詮釋資料、後設資料、元数据)的输入。然而我們仍可數量不少的筆記是沒有寫上Metadata的內容的,有什麼方法可以快速的在筆記最上方加上這一些特性呢?

  1. 寫個程式去處理。這留待好心人來幫忙 🙏
  2. 用Linter在儲存時自動插入缺少的特性
  3. 使用TagMany外掛依據資料夾添加標籤,可惜只能對tags欄位增加標籤
  4. 使用File Cooker外掛添加特性,也有刪除的功能
  5. 使用Tag Wrangler對標籤重新命名
  6. 自行撰寫Templater腳本,登錄為Hotkeys並綁定熱鍵以快速輸入

1. 產生預設的筆記特性(Linter)

  • Linter有很多功能,主要是維持筆記內容的格式正確性
  • 在Linter的【Insert YAML attributes】輸入好 欄位: ,一行一個欄位,在筆記儲存檔時會自動添加到筆記開頭的YAML區

gh|700

  • YAML Timestamp可以設定自動更新建檔時間和修改時間

  • 建檔時間是直接讀取作業系統的建檔日期,有時建檔時間會變動(例如在新電腦取回雲端硬碟的檔案時,建檔日期是下載當時的時間),建議勾選【Force Date Createsd Key Value Retentkion】以保留第一次讀到的檔案時間
    gh|700

  • 若要某個筆記停用Linter的功能:

    disabled rules:
    - all

2. 將內文的筆記標籤移至YAML區(Linter)

Obsidian的標籤有兩大類:

  1. 筆記(頁面)標籤:針對整個筆記檔案的標籤,寫在YAML區或本文區獨立一行(必須 #開頭)
  2. 行內標籤:加在區塊後方的標籤(與區塊文字之間必須至少有一個空白)

勾選Linter的【Move all tags to YAML frontmatter of the document】可以自動將寫在本文區的獨立標籤添加到YAML區。
Body tag operation可以指定本文區的標籤在複製到YAML區後要如何變更:

  1. Nothing: 留在原處不做任何處理
  2. Remove hashtag: 刪除井號(#)
  3. Remove whole tag: 移除整個標籤

gh|700

3. 為資料夾內所有筆記添加標籤(TagMany)

在安裝了TagMany外掛後,檔案瀏覽器的資料夾右鍵選單會有【Tag all notes in this folder】

  • 輸入標籤,以逗點分隔
  • 可勾選【Include subfolders】是否包含子資料夾

gh|700

[!WARNING]+ 警告
tags的值必須是陣列或清單格式
即:tags: [tag1, tag2, tag3]

tags:

  • tag1
  • tag2
  • tag3

4. 批量更新特性(File Cooker)

File Cooker可以由系統剪貼簿、搜尋結果或Dataview區塊等,查詢出符合的結果後,再執行指定操作。

和特性相關的是命令 【Edit Properties in clipboard files...】,操作步驟如下:

  1. 將要操作的檔名複製到剪貼簿
  2. Ctrl/Cmd+P 搜尋cook→執行【Edit Properties in clipboard files...】
  3. 在彈出的對話窗輸入YAML欄位與它的值。當欄位值以 - 減號開頭時則刪除欄位

test
test-columns

▼ 將test.md、test-columns.md的tags欄位添加標籤#test1#test2並刪除#test3
gh|700

5. Tag Wrangler

  • 功用:重新命名、搜尋等功能。
  • 操作方法:在標籤側邊欄找到要操作的標籤後,用右鍵功能表彈出功能表

tag1|400

6. 自訂選單(Templater Hotkeys)

為了方便Dataview的查詢,建議資料量少且只會有一個值的的Property盡量使用文字格式,而不要使用清單格式。

透過Templater Hotkey可以快速的彈出選單並添加或更新需要的特性。

▼ 筆記類型選單

<%*
// Hotkey: Alt+T
let aTypes = ["P 專案筆記", "S 彙總筆記", "R 閱讀筆記", "A 原子筆記", "I Index"];
let type = await tp.system.suggester(aTypes, aTypes, false, "選擇筆記類型");
if (!type) return;
type = type.substring(2);
await app.fileManager.processFrontMatter(tp.config.active_file, (fm) => {
 fm["type"] = type;
});
-%>

細節參考:Obs127-用Templater Hotkeys簡化Obsidian自動化腳本

7. 相關鏈接

✅ 影片:Properties (Obsidian 1.4)! 視覺化YAML編輯,讓Frontmatter可用性又向上一階
Linter GitHub
✅ 說明文件: Linter
TagMany GitHub
File Cooker GitHub
Tag Wrangler GitHub

8. 教學影片

##

您可能也會有興趣的類似文章

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *