[Obs#57] YAML區tags標籤自動補全的3種方法
Obsidian目前(v0.12.19)在YAML區輸入標籤時,無法以 #標籤 的格式出現,不使用 #,就不會自動顯示標籤列表供使用者選取,用了 # 又會造成語法錯誤。我彙總了3種解決方法。
# 人工操作
仍然輸入 # 以顯示標籤彈窗,選取完成後再刪除 # ,或加入雙號號:
"#標籤"
無法用 # 的原因
# 井字號在YAML語法是註解,因此加了 # 會造成「INVALID YAML」的錯誤。
- 使用linter外掛
- 撰寫QuickAdd巨集replace_tags.js:限用一行式陣列寫法
- 撰寫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);
}
設定步驟
- 在儲存庫裡以文字編輯器建立replace_tags.js
- 設定→QuickAdd選項→【Manage Macros】
- 輸入巨集名稱:macro_replace_tags
- 【Add macro】→User Script選用replace_tags.js
- 設定→QuickAdd選項→輸入「Macro: Replace Tags」
- 選用【Macro】後點擊【Add Choice】
- Configure 「Macro: Replace Tags」:選用巨集macro_replac_tags
使用步驟
- 在YAML區tags右側輸入 # 選取標籤
- 標籤皆選用完畢後執行上述設定的QuickAdd巨集
- 巨集將刪除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;
}
設定步驟
- 在儲存庫裡以文字編輯器建立select_tags.js
- 設定→QuickAdd選項→Manage Macros
- 輸入巨集名稱:macro_select_tags
- Add macro,User Script選用select_tags.js
- 設定→QuickAdd選項→輸入「Capture: Select Tags」
- 選用【Capture】後點擊【Add Choice】
- 點擊⚡以加入命令面板
- Configure 「Capture: Select Tags」
- 啟用Capture to active file
- 啟用Capture format並輸入內容:{{MACRO:macro_select_tags}}
- 替Capture: Select Tags設定一個快捷鍵
使用步驟
在YAML區tags右側點擊設定好的快捷鍵,在彈出視窗裡選取標籤
相關連結
- obsidian-linter外掛
- replace_tags.js: https://gist.github.com/emisjerry/9dcd3dfd9a337530731f22253d43e6b7
- select_tags.js: https://gist.github.com/emisjerry/287590ee7a23930f0e968a4903a3f3d0
教學影片
##
您可能也會有興趣的類似文章
- [Obs#51] QuickAdd全攻略(2):腳本撰寫與巨集使用要點 (0則留言, 2021/09/18)
- Obs139|5個方便維護Properties的外掛:Linter、TagMany、File Cooker、Tag Wrangler、Templater Hotkeys (0則留言, 2023/09/10)
- [Obs#50] QuickAdd全攻略(一):改變工作流程的超強外掛 (0則留言, 2021/09/12)
- [Obs#58] 快速開啟常用筆記的方法 (0則留言, 2021/10/23)
- Obs127|用Templater Hotkeys簡化Obsidian自動化腳本,詳解4個腳本範例 (0則留言, 2023/05/05)
- Obs135|解鎖簡易Dataview查詢:驚人的SQL技巧,使用Query All The Things(QATT)外掛 (0則留言, 2023/08/19)
- Obs150|多重筆記標籤操作-新增與移除:Multi Tag、TagMany、Notepad++、EmEditor、VS Code (0則留言, 2024/02/04)
- [Obs#18] v0.9.16 YAML增強功能: tags與aliases (0則留言, 2020/11/20)
- Obs153|快速開啟外掛設定的方法;使用Open Plugin Settings與Advanced URI,透過Templater Hotkeys綁定快捷鍵 (0則留言, 2024/02/28)
- [Obs#88] 綜合練習:快速設定的6種方法─使用8個Obsidian外掛 (0則留言, 2022/05/21)
- Obsidian 1.0新手教學—打造個人知識管理利器,專屬的第二大腦 (2022年) (4則留言, 2022/10/22)
- [Obs#55] 建立新筆記的模板設定-Calendar, Templater與QuickAdd (0則留言, 2021/10/09)
- [Obs#12] Obsidian v0.8.4~v0.8.9的新增功能 (0則留言, 2020/09/06)
- [Obs#71] 新手適用的多功能模板外掛:From Template (0則留言, 2022/02/19)
- Obs134|用Dataviewjs製作簡單的建檔統計圖-使用Charts外掛 (0則留言, 2023/08/13)
您好!
感谢提供快捷方式添加yaml区的tag。不过按照您提供的第三种方式,用quickadd调用js添加yaml区tag,可以调出命令面板,但是选择tag后,并没有在yaml区添加成功。请问这种情况如何解决?
按F12看一下訊息?