Obsidian介绍
- Obsidian 是一个实现双向链接知识图谱的知识管理工具。它虽然不是开源软件,但是非付费用户也能使用完整的功能,除了开发商提供的付费的云同步服务。它使用MarkDown文件作为文件载体,MarkDown文件有丰富的语法和插件可以记录你的所有想法,而且还方便在不同软件中迁移。
- Obsidian的插件系统是另一个提高效率的帮手。模板,图标,标注等插件可以解决不同的需求痛点。
- Obsidian将存储数据的文件夹称为
Vault,在Vault中不仅保存有笔记的MarkDown文件,Obsidian的配置文件和插件程序也保存在.obsidian文件夹中。 - 因此如果需要在不同设备上转移数据,可以拷贝整个文件夹,即可复制所有笔记文件以及软件配置和安装的插件。
主题
社区提供了各种风格的主题。
依次进入Settings » Apearance » Themes Manage 可以找到社区主题。
使用效果看Things 和 Solarized 比较优雅。其中Solarized比较适合墨水屏。
Golden Topaz
还可以使用css-snippets自定义外观。 obsidian-snippets css-snippets 修改后需要重启生效
.theme-light {
--text-selection: #89ddff;
--background-primary : #ffffff;
/*--background-primary-alt : #89ddff;*/
}
插件
Core Plugins
| 插件 | 描述 | 备注 |
|---|---|---|
| Starred | 文件加星标可以在左侧看到星标文件 | |
| Outgoing links | 查看当前文件链接到的外部文件 | |
| Daily notes | 新建日记 | 设置目录Daily和模板 |
| Outline | 可以在右侧栏看到文章大纲 |
Community Plugins
常用 Obsidian 处理中文长文?试试这些大幅提升体验的插件和代码片段 - 少数派 (sspai.com)
- 安装插件之前先要安全模式,
Settings»Community Plugins»Safe Mode取消勾选。 点击 Broswer 可以搜索插件,找到你感兴趣的插件,点击 Install 等待下载完成之后,点击Enable即可启用插件。 - 在
Settings界面中的PLUGIN OPTION下可以看到安装完成的插件,根据需要设这参数。
| 插件 | 描述 | 备注 |
|---|---|---|
| Kanban | 简单的Kanban,用来跟踪任务计划 | 勾选 Display card check box. |
| Templater | 模板引擎,可以快速添加文件 | 设定 Template Fold Location |
| Advanced Tables | 表格工具,右侧有工具栏 | |
| Day Planer | 时间线任务规划 | 设置File Mode利用模板和面板命令Link Today's Day Planer |
| Remember cursor position | 记住光标位置 | |
| Codemirror | 所见即所得 | |
| Markdown prettifier | 修复、统一 Markdown 文件到标准语法 | |
| Easy Typing | 排版和输入符号自动切换等功能 | |
| Auto pair chinese symbol | 中文符号自动补齐 | |
| Pangu | 排版工具,增加中文和英文之间空格 | |
| DataView | 数据分析脚本 | doc |
| ChartsView | 图表可视化,可结合DataView使用 | |
| File Tree Alternative Plugin | 另一个文件树 |
暂时发现v0.13.23 的Obsidian 启用Day Planer可能导致在修改文件时提示Mergring Changes automaticly,停用Day Planer暂时解决。
Easy Typing启用时,输入中文会出现第一个字母变成英文输入,暂时停用。
以下详细介绍几个插件使用方法
Templater
博客文章模板示例
---
layout: post
title: <% tp.file.title %>
subtitle: <% tp.file.title %>
date: <% tp.date.now("YYYY-MM-DD") %>
author: WW
header-img: img/post-bg-ios9-web.jpg
catalog: true
tags:
- <% tp.system.prompt("tags") %>
---
<% await tp.file.rename(tp.date.now("YYYY-MM-DD") +"-"+tp.file.title) %>
DataView 和 ChartsView
以下例子演示的操作是获取当前页的任务checkbox,通过饼状图展示完成进度。
# Task
- [ ] 12:00 Reading
- [x] Article 1
- [x] Article 2
- [x] Article notes review
- [x] 12:25 BREAK
- [ ] 12:30 Reading
- [ ] 14:00 BREAK
#-----------------#
#- chart type -#
#-----------------#
type: Pie
#-----------------#
#- chart data -#
#-----------------#
data: |
dataviewjs:
let page = dv.current();
let task = page.file.tasks;
let table = task.groupBy(t => t.completed).map(p => ({ type:(p.key ? "完成" :"未完成"), value:p.rows.length}));
return table.array();
#-----------------#
#- chart options -#
#-----------------#
options:
angleField: "value"
colorField: "type"
radius: 0.5
label:
type: "spider"
content: "{percentage}\n{name}"
legend:
layout: "horizontal"
position: "bottom"
和Daily Notes结合使用
日记模板文件如下
## Day Planner
## 昨天的日记[[Daily/<% tp.date.now("YYYY-MM-DD",-1) %>]]
## 当天任务
let page = dv.current();
let task = page.file.tasks;
let today_task_num = task.length;
let today_unfinished_task_num = task.where(t=> !t.completed ).length;
let today_unfinished_temp_task_num = task.where(t=> !t.completed && !t.due).length;
dv.table(["今日任务","今日未完成","临时任务未完成"],[[today_task_num,today_unfinished_task_num,today_unfinished_temp_task_num]])
### Morning Prep
This is where I get ready for work and do my usual prep.
- [ ] 09:30 Setup for work
- [ ] 09:45 Review notes from yesterday
- [ ] 10:30 Create new notes for #article review
- [ ] 11:30 BREAK
## 历史任务
let page = dv.pages('"Daily"');
let task = page.file.tasks;
let all_unfinished_task_num = task.where(t => !t.completed).length;
let all_unfinished_due_task = task.where(t => !t.completed && t.due
&& t.due < dv.date("today"));
let all_unfinished_due_task_num = all_unfinished_due_task.length;
let all_unfinished_todue_task = task.where(t => !t.completed && t.due
&& t.due >= dv.date("today")).sort(t => t.due);
let all_unfinished_todue_task_num = all_unfinished_todue_task.length;
let task_in_5_day = all_unfinished_todue_task.where(t=> !t.completed && t.due && (((t.due - dv.date("today") )/(1000 * 60 * 60 * 24))<5 ) ).sort(t => t.due)
;
let task_in_30_day = all_unfinished_todue_task.where(t=> !t.completed && t.due && (((t.due - dv.date("today") )/(1000 * 60 * 60 * 24))<30 ) ).sort(t => t.due)
;
let task_beyond_30_day = all_unfinished_todue_task.where(t=> !t.completed && t.due && (((t.due - dv.date("today") )/(1000 * 60 * 60 * 24))>30 ) )
;
dv.table(["历史未完成任务","超期任务","待办任务"],[[all_unfinished_task_num,all_unfinished_due_task_num,all_unfinished_todue_task_num]]);
dv.header(1,"超期任务");
dv.taskList(
all_unfinished_due_task
);
dv.header(1,"5天内待办任务");
dv.taskList(
task_in_5_day
);
dv.header(1,"30天内待办任务");
dv.taskList(
task_in_30_day
);
dv.header(1,"超过30天内待办任务");
dv.taskList(
task_beyond_30_day
);
推荐Vault
Obsmd-Life-Manage
拥有美观界面和丰富的任务管理操作 I turned my task management system into a shareable repo, due to many requests. Link in comments. : ObsidianMD
GitHub - EliWimmer/Obsmd-Life-Manager 使用方法,下载Vault并打开即可