Obsidian笔记

Obsidian笔记

Posted by WW on March 3, 2022

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并打开即可