Skip to content

Commit

Permalink
更新
Browse files Browse the repository at this point in the history
- 新增文章
- 更新各个文件的MOC关系
  • Loading branch information
juestchaos committed Jan 11, 2024
1 parent 1b0740e commit 9d30c01
Show file tree
Hide file tree
Showing 8 changed files with 227 additions and 110 deletions.
8 changes: 4 additions & 4 deletions 03-知识管理工具/备份与同步/备份与同步.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
uid: 20230329140136
title: 备份与同步
title: Obsidian 备份与同步
tags: []
description:
author:
description: Obsidian 备份与同步
author: PKMer
type: other
draft: false
editable: false
modified: 20231130142212
modified: 20240111112740
---

# 备份与同步
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
---
uid: 20240111112634
title: 💡前言
tags: [💻教程, quickadd]
description:
author: Devol,windilycloud
type: other
draft: false
editable: false
modified: 20240111113324
"created:": 2024-01-09
---

# 💡前言

> 相信各位在使用 Obsidian 的日常中会经常调用模板,[[templater-obsidian]] 就是大家所熟知的 obsidian 模板插件,通过快捷指定自定义模板的方式获得了许多 Obsidian 爱好者的青睐,我本人就是其中之一。然而这次本教学将会另辟蹊径使用另一个插件——[[quickadd]],来完成自动调用模板的操作。
### 1.为什么想做这个?

随着我日复一日地使用 Obsidian,我发现自己越来越依赖模板的便捷。然而,快捷键设置越来越多,我常常忘记它们对应的模板元素,而且快捷键也容易被其他应用占用。于是我开始思考,能否实现通过一个模板调用多个模板的操作。

### 2.使用 templater 插件中遇到的难题

网上搜索后,得知 templater 可以实现该功能,喜不自禁的我就这样跟着教程磕磕绊绊地学习。然而现实给我了迎头痛击,无论我尝试了多少个他人 Obsidian 库,反复研究了多久的帖子,始终未能实现输入文本自动调用模板的功能,只能做到点击选项调用不同模板,这远远达不到我的预期。

### 3.峰回路转

终于,困难迎来了转机,通过研究 Obsidian 知识社区以及加入 QQ 群,我得知了一个新的在线平台——PKMer,并且加入了官方 QQ 群。经过交流,我了解到 quickadd 同样可以实现模板调用,在此特别感谢群里的**==大脸猫皮皮==**,是他完成了脚本的整体框架,我只是做了一些小修小改。

# ⭐功能介绍

- 此自动化流程可通过输入 ==模板名称 - 任意文本== ,即可新建一份名字为==任意文本==的笔记。
- 此自动化流程需要依赖 QuickAdd 插件运行,并配合 Templater 插件实现语法转换。
- 使用方法——比如我们在 templater 文件夹放置了四个模板文件,分别是人物模板.md、书籍模板.md、通用模板.md、阅读笔记模板.md。
- 按下 quickadd 设置的快捷指令,在打开的文本窗口处输入:人物模板 - 爱德华,则会调用文件为 " 人物模板.md" 的模板,随后在指定目录下生成一份名为 " 爱德华 " 的笔记,原先窗口输入的 " 人物模板 -" 会自动去除,且该笔记会在 Obsidian 中以右分屏的方式打开。
- 同理,你还可以输入书籍模板 - 爱德华、通用模板 - 爱德华、阅读笔记模板 - 爱德华,生成的笔记都会以 " 爱德华 " 命名。
- 如果不输入前缀 ==模板名称 -==,仅输入爱德华,那么将会调用默认的“通用模板.md”文件
- 只需进行一次设置,便能轻松应对后续任何模板的添加,无需再次配置。

> [!note] 接下来
我将会用图例的方式,带你一步步了解使用这个基于 QuickAdd 插件的脚本进行自动化模板流程的全过程。

# 📚教程

### 1、插件安装

- 首先,我们需要安装 Templater 与 quickadd 这两个插件,为了方便大家操作,我已经在分享的 Obsidian 库里面为大家安装完成。

### 2、Templater 设置

- 我们优先设置 templater,因为只有一个步骤。
- 里面的重要选项都已经通过中文翻译出来了。实际上,我们只需要开启 Automatic jump to cursor 和 Trigger Templater on new file creation 这两个选项,其他选项没有必要理会,如果不懂可以完全按照图片设置。

![自动化模板脚本教学-图片20240109231007.png](https://cdn.pkmer.cn/images/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A8%A1%E6%9D%BF%E8%84%9A%E6%9C%AC%E6%95%99%E5%AD%A6-%E5%9B%BE%E7%89%8720240109231007.png!pkmer)

### 3、quickadd 设置

##### 步骤一:打开 quickadd 设置界面,并新建一个 Marco 宏

![自动化模板脚本教学-图片20240109235826.png](https://cdn.pkmer.cn/images/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A8%A1%E6%9D%BF%E8%84%9A%E6%9C%AC%E6%95%99%E5%AD%A6-%E5%9B%BE%E7%89%8720240109235826.png!pkmer)

##### 步骤二:宏添加指令

![自动化模板脚本教学-图片20240110000153.png](https://cdn.pkmer.cn/images/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A8%A1%E6%9D%BF%E8%84%9A%E6%9C%AC%E6%95%99%E5%AD%A6-%E5%9B%BE%E7%89%8720240110000153.png!pkmer)

##### 步骤三:添加 user scripts 脚本,并关闭界面

![自动化模板脚本教学-图片20240110000458.png](https://cdn.pkmer.cn/images/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A8%A1%E6%9D%BF%E8%84%9A%E6%9C%AC%E6%95%99%E5%AD%A6-%E5%9B%BE%E7%89%8720240110000458.png!pkmer)

##### 步骤四:快捷键界面找到刚才设置的宏,并设置任意快捷键

![自动化模板脚本教学-图片20240110000739.png](https://cdn.pkmer.cn/images/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A8%A1%E6%9D%BF%E8%84%9A%E6%9C%AC%E6%95%99%E5%AD%A6-%E5%9B%BE%E7%89%8720240110000739.png!pkmer)

---

quickadd 至此设置完毕,接下来是 js 文件展示。

### 4、auto-insert-template.js 文件

>[!help] 脚本使用指南
因 quickadd 会对 obsidian 文件夹进行全局检索,故 js 脚本文件放在任何地方都能生效,但仍建议脚本文件统一放置在专门的脚本文件夹内。
若日后需要调整模板与新建笔记的位置,只需打开该 js 脚本并修改 templateFolder 与 targetNoteFolder 的路径。
如果想要修改新建笔记默认的文件名与调用模板,请到 " 通用模板 - 未命名 " 和“${templateFolder}/通用模板.md”这两个地方修改(不要复制双引号)。

```js
const templateFolder = "BT_Example/88-Template/收录模板"; // 模板文件存放目录,使用相对路径,可自行更改,检索不到匹配文件夹会报错(注意大小写)
const targetNoteFolder = "📝笔记存放/测试1"; // 新建笔记存放目录,可自行更改,后续代码已设置为不存在文件夹时会自动创建文件夹。

// 本脚本根据模板文件名新建笔记,如模板目录下存在名称为“通用笔记”的模板,输入:通用模板-123,将会新建名为“123”的笔记。
// 修改上面 templateFolder 的地址可调整模板存放目录,修改 targetNoteFolder 的地址可调整新建笔记目录。
// 如果没有调用模板,则使用templateFolder路径下名称为’通用模板.md‘的文件为默认模板,可自行修改成其他文件。
// 当发生新建文件名重复时,Obsidian会通知错误报告:Error: File already exists,并阻止新建笔记。

module.exports = async (params) => {
// 初始化quickadd的api
const basePath = params.app.vault.adapter.basePath;
const {
quickAddApi: { inputPrompt },
} = params;
// 从modal输入文件名
let noteName = await inputPrompt("📖 请输入笔记标题:");

// 检查用户输入是否为空
if (!noteName || noteName.trim() === '') {
noteName = "通用模板-未命名";// 如果用户没有输入内容,默认输入 "通用模板-未命名",实际生成的文件名为"未命名"。
}

// 检查目标笔记目录是否存在,如果不存在则创建
const folderPath = `${targetNoteFolder}`;
const folderExists = await app.vault.adapter.exists(folderPath);
if (!folderExists) {
try {
await app.vault.createFolder(folderPath);
} catch (error) {
new Notice(`无法创建文件夹:${folderPath}`);
return;
}
}

// 遍历文件获取模板,无需改动
const templateList = app.metadataCache
.getCachedFiles()
.filter((templateName) => {
if (templateName.startsWith(templateFolder)) {
return true;
}
return false;
});

// 笔记名和模板的匹配规则
let targetTemplatePath = undefined;
templateList.some((templatePath) => {
if (templatePath.includes(noteName.split("-")[0])) {
targetTemplatePath = templatePath;
return true;
}
return false;
});

// 默认模板:如果没有找到匹配的模板,使用默认的通用模板
if (!targetTemplatePath) {
targetTemplatePath = `${templateFolder}/通用模板.md`; // 设定默认模板的文件名为“通用模板.md”,可根据本人需求更改文件名。
}

// 只提取符号"-"后面的文字作为文件名。
const fileName = noteName.split("-").pop();

// 如果没有找到匹配的模板,也无法使用默认模板
if (!targetTemplatePath) {
new Notice("未找到匹配的模板,也无法使用默认模板");
return;
}

try {
// 如果文件已存在,抛出错误
const fileExists = await app.vault.adapter.exists(fileName);
if (fileExists) {
throw new Error(`${fileName} 文件已存在于 ${targetNoteFolder}`);
}
const file = await app.vault.create(
`${targetNoteFolder}/${fileName}.md`,
""
);

// 获取模板内容
const templateTFile = await app.vault.getAbstractFileByPath(
targetTemplatePath
);
const templateContent = await app.vault.cachedRead(templateTFile);
await app.vault.modify(file, templateContent);

// 创建后打开文件
if (app.workspace.getActiveFile()) {
app.workspace.splitActiveLeaf().openFile(file);
} else {
app.workspace.getUnpinnedLeaf().openFile(file);
}
}
catch (error) {
new Notice(error.toString());
}
};

```

# 🎉结束语

在此,恭喜阅读完此教程并进行实际实施的小伙伴!希望这篇简要的教学为你带来了实质性的帮助。

曾经的我,也会因对 quickadd 设置繁琐而忽略它。如今通过持续的深入学习,明白了为何众多用户推崇此插件,其高度的自定义宏指令自由度是其他插件无法比拟的。

所以,本教学力求让人通俗易懂,我尤其理解初学者在学习 Quickadd 时可能遇到的困难,点击进一个 Obsidian 的教学帖子,却感觉讲得像是天书。目睹到评论区其他用户的研究成果,对比自身的不尽如人意,很容易陷入自我怀疑的漩涡,从而消磨对 Quickadd 插件和 Obsidian 的学习热情。

因此,希望本教学能让你抛弃大脑,无需过多纠结,只要跟随步骤一步一步操作,即可轻松上手并运用 Quickadd。

在撰写这篇教学时,也遇到过一些难题,同时解答了之前一直困扰我的疑惑:为何之前学习 templater 插件时屡屡碰壁?

原来我最初参考的 templater 教学贴所推荐的自动化模板已经失效,不受到 templater 的支持,这是我通过 templater 多次调用不同模板测试中发现的结果。

旧的自动化操作已经不适用于当前,到了 2024 年,这个经过多次修改已趋至完美的自动化流程,应运而出!

当然,初次涉足新的知识领域,难免出现一些不能尽善尽美的地方——①在创建同名文件时无法做到自动递增文件②始终没明白为什么新建笔记总是以右分屏打开;这俩算是个不大不小的遗憾。

最后,感谢各位 Obsidian 使用者对本教学的观看。

——END.
4 changes: 3 additions & 1 deletion 10-Obsidian/Obsidian使用技巧/Obsidian使用技巧.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ author: OS
type: awesome
draft: false
editable: false
modified: 20231215144448
modified: 20240111113510
---

# Obsidian 使用技巧
Expand Down Expand Up @@ -52,6 +52,7 @@ modified: 20231215144448
- [[obsidian-tasks的GTD实践|基于 task 插件的实战 GTD 管理]]
- [[将引用的内容嵌入到行的方案]]
- [[每日字数的热力图]]
- [[auto-insert-template自动化模板教学]] by Devol

## 与第三方软件联动

Expand All @@ -62,3 +63,4 @@ modified: 20231215144448
- [[如何运用obsidian和Zotero的插件配置整理文献管理实现阅读笔记]]
- [[Cubox 通过 Advanced Uri 插件导入 Obsidian]]
- [[关于 Diagram 软件的功能介绍以及在 Obsidian 使用的方案]]
- [[表格操作占用快捷键过多的解决方案]]
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ author: ImmortalSty
type: advanced
draft: false
editable: true
modified: 20240101225402
modified: 20240111113443
---

# 表格操作占用快捷键过多的解决方案
Expand All @@ -21,7 +21,7 @@ modified: 20240101225402
## 用 Quicker 动作解决

> [!info]+ 动作信息
>
>
> - 动作:[Obsidian Table Vim](https://getquicker.net/Sharedaction?code=611fa021-c7f5-491e-0583-08dc0558572f)
> - 简介:加强 ob 插入表格的功能,解决 ob 表格功能太多,快捷键不够用的问题。
Expand Down
6 changes: 5 additions & 1 deletion 10-Obsidian/Obsidian社区插件/Quickadd/quickadd.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ author: windilycloud
type: basic
draft: false
editable: false
modified: 20230916184031
modified: 20240111113104
---

# Obsidian 插件:QuickAdd 自动化操作的编辑器
Expand Down Expand Up @@ -169,7 +169,11 @@ module.exports = async (params) => {

注:这里只有 utools 是全平台的,AutoHotkey 是 Windows 独占的开源软件,Alfred,Raycast 是 Mac 独占商业软件。

## 相关教程

- [[Quickadd结合CSS实现挖空复习]]
- [[Quickadd脚本-一键在某软件中打开Ob笔记]]
- [[Quickadd脚本-一键在系统应用中打开图片编辑]]

## 视频教程

Expand Down
6 changes: 5 additions & 1 deletion 10-Obsidian/Obsidian社区插件/obsidian-zoom.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ author: cuman, 熊猫别熬夜
type: other
draft: false
editable: false
modified: 20240108112959
modified: 20240111113648
---

# Obsidian 插件:Zoom 通过快捷键,快速聚焦到大纲
Expand Down Expand Up @@ -47,6 +47,10 @@ modified: 20240108112959
| --- | :-: |
| Zooming in when clicking on the bullet (单击项目符号时放大) | `true` |

## 其他技巧

- [[Obsidian插件技巧-Zoom插件的妙用]]

## 功能延伸

配合 [[obsidian-outliner]] 插件 可以实现类似大纲笔记的编辑效果。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ author: cuman
type: other
draft: false
editable: false
modified: 20230816105704
modified: 20240111112952
---

# Obsidian 插件:Templater 可以替代核心模板插件的效率神器
Expand Down Expand Up @@ -103,4 +103,4 @@ created: 2023-08-19

- [[Templater实现关键词自动化套用模板]]:铅笔小明分享的通过关键词自动化套用模板
- [[Templater插件基本语法格式]]
- [[Templater插件两次单选语法]]]
- [[auto-insert-template自动化模板教学]]
Loading

0 comments on commit 9d30c01

Please sign in to comment.