[Obs#57] YAML區tags標籤自動補全的3種方法

tp.web.random_picture|560x300

Obsidian目前(v0.12.19)在YAML區輸入標籤時,無法以 #標籤 的格式出現,不使用 #,就不會自動顯示標籤列表供使用者選取,用了 # 又會造成語法錯誤。我彙總了3種解決方法。

# 人工操作

仍然輸入 # 以顯示標籤彈窗,選取完成後再刪除 # ,或加入雙號號:"#標籤"

無法用 # 的原因

# 井字號在YAML語法是註解,因此加了 # 會造成「INVALID YAML」的錯誤。

  1. 使用linter外掛
  2. 撰寫QuickAdd巨集replace_tags.js:限用一行式陣列寫法
  3. 撰寫QuickAdd巨集select_tags.js:彈出標籤視窗供選取

1. Linter外掛

安裝並啟用Linter,勾選【Format Tags in YAML】。

技巧

YAML區不能用陣列格式,也不能用列表格式。

🐞無法轉換

tags: [ #tag1, #tag2 ]

tags:
    - #tag1
    - #tag2

✅ 正常轉換

tags: #tag1 #tag2

tags: #tag1, #tag2

2. QuickAdd腳本刪除所有 #

原始碼

module.exports = async function replace_tags(params) {
  const {app, quickAddApi: {suggester}} = params;

  const activeLeaf = app.workspace.activeLeaf;
  const editor = activeLeaf.view.editor;
  const lineNumber = editor.getCursor().line;
  let content = editor.getLine(lineNumber);
  content = content.replace(/#/g, "");

  editor.setLine(lineNumber, content);
}

設定步驟

  1. 在儲存庫裡以文字編輯器建立replace_tags.js
  2. 設定→QuickAdd選項→【Manage Macros】
    • 輸入巨集名稱:macro_replace_tags
    • 【Add macro】→User Script選用replace_tags.js
  3. 設定→QuickAdd選項→輸入「Macro: Replace Tags」
    • 選用【Macro】後點擊【Add Choice】
    • Configure 「Macro: Replace Tags」:選用巨集macro_replac_tags

使用步驟

  1. 在YAML區tags右側輸入 # 選取標籤
  2. 標籤皆選用完畢後執行上述設定的QuickAdd巨集
  3. 巨集將刪除tags該行所有的 #

3. 彈出標籤視窗以選取標籤

module.exports = async function select_tags(params) {
  const {app, quickAddApi: {suggester}} = params;
  const allTags = Object.keys(app.metadataCache.getTags());
  let tag = await suggester(allTags, allTags);
  if (!tag) return;

  tag = tag.substring(1);  // skip the hash symbol
  return tag;
}

設定步驟

  1. 在儲存庫裡以文字編輯器建立select_tags.js
  2. 設定→QuickAdd選項→Manage Macros
    • 輸入巨集名稱:macro_select_tags
    • Add macro,User Script選用select_tags.js
  3. 設定→QuickAdd選項→輸入「Capture: Select Tags」
    • 選用【Capture】後點擊【Add Choice】
    • 點擊⚡以加入命令面板
    • Configure 「Capture: Select Tags」
      • 啟用Capture to active file
      • 啟用Capture format並輸入內容:{{MACRO:macro_select_tags}}
  4. 替Capture: Select Tags設定一個快捷鍵

使用步驟

在YAML區tags右側點擊設定好的快捷鍵,在彈出視窗裡選取標籤

相關連結

教學影片

##

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

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

2 個回應

  1. Alan表示:

    您好!
    感谢提供快捷方式添加yaml区的tag。不过按照您提供的第三种方式,用quickadd调用js添加yaml区tag,可以调出命令面板,但是选择tag后,并没有在yaml区添加成功。请问这种情况如何解决?

發佈留言

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