obsidian

概述

hexo+github 的工作流程在blog迁移中已有提及,此处不详述,只谈谈编辑器优化。

之前我写blog用的是notion+typora,每次写新博客就要hexo new post [title] 一下,然后很费劲地手打文章frontmatter里的tags和categories(tab键按烂了不说,每次还得翻回旧博客看看categories的格式怎么打)。正好这几天发现obsidian的白板挺好用,于是开始学习obsidian的用法—-惊为天人。多么人性化的用户界面!多么赏心悦目的主题设置!多么精彩纷呈的插件广场!(多么令人担忧的打开速度) 总体来说,obsidian是一款花费3小时的学习配置成本就能变得非常好用的编辑器。(那我80块买的typora怎么办=w=)

既然obsidian作为编辑器比typora强上不少,那么做一些小改动、让它适配于hexo+github的博客体系就可以了。下面具体介绍这些改动。

插件

事实上,作为知识库的obsidian和作为blog编辑器的obsidian需要的编辑器差不多,因为它们都需要基础的markdown编辑、git同步、图片插入等功能。

核心插件

核心插件中的大多数都很有用,可浏览一遍酌情开启。其中最有用的是【模板】功能,可以指定文件作为模板,在新建文件中插入。我的天哪,这简直就是frontmatter的再生父母!该模板的具体设置如下:

  • title
    • 留空即可
  • date
    • 1743143468000 ,须在模板设置中定义时间格式
  • tags
    • 属性类型设置为标签,就可以滑动选择了!
    • 输入#标签名以新建标签
  • categories
    • 留给这位佬开发的插件解决:npm install hexo-auto-category --save
    • 注意,第一次hexo g的时候可能不会生成categories,需再运行一次。
  • comments: true / false,属性类型为复选框

一般来说,用obsidian打开一个带frontmatter的md,它就会直接给你建好【笔记属性】栏。

第三方插件

好用的插件有:

  • editing toolbar 编辑栏
  • floating toc 悬浮目录
  • rescent files 快速打开
  • ZH 增强编辑
  • excel to markdown 粘贴表格
  • 等等……

其中git插件可用于在obsidian内push,但前提条件是打开的obsidian库本身就是一个repo。像我这种blog repo在obsidian库下一层级的就麻烦了,用这个插件还不如直接git bash,所以此处请这位讲解(ta后面讲的快捷操作没太大必要,要改_config不如用VSCode)。

重要问题优化

图片插入和尺寸调节

typora的图片插入刚在blog迁移中搞定,obsidian的图片插入问题又来。好在解决方式简单:修改附件存放路径即可。

在【设置-文件与链接-附件文件夹路径】输入blog/source/imgs即可实现粘贴即插入的图片导入。

要调节图片大小,要么安装mousewheel image zoom插件,快捷键+鼠标滚轮调节;要么手动在图片链接后面加|500之类的缩放倍数。

obsidian暂且无法支持图片居中,默认居左,加|R居右。

但是怎么在博客上正常显示呢?

像下面这样配置【文件与链接】即可:

475

图片大小用![475](blog/source/imgs/majiang.png) 里面的[475]调就可以了。

双向链接

根据hexo-link-obsidian插件的readme走就行了。需要安装hexo和obsidian的插件各一个,我不想改文章的link,就麻烦点,自己加链接了。

加粗和尖括号渲染错误

加粗渲染只能通过在** 后面加空格解决,不得不说这渲染逻辑真是垃圾。

<>符号会导致后面的markdown语法全部失效,无法渲染。只能说obsidian在针对晶向簇。解决:像上文一样把<>放进代码块。

使用iSH+GitHub进行iPad+win双端Obsidian同步

***我的需求:windows端和ipad端互相同步。

学习了多种同步方法,发现主流同步方法都依托IBM cloudant、坚果云等等的同步软件,收费且容量小。

最终选择上传GitHub同步。难点在于ipad端的git操作(此处使用ish实现)。

主要软件:appstore的ISH 和 obsidian的Git插件

参考了:
https://forum-zh.obsidian.md/t/topic/10083
https://zhuanlan.zhihu.com/p/565028534

第一步:准备工作

  1. 在iPad上安装iSH应用(App Store下载)
  2. 在iPad上安装Obsidian应用

第二步:在iPad上创建Obsidian库

  1. 打开Obsidian应用,创建一个新的保管库(vault)
  2. 不要勾选”存储在iCloud”选项
  3. 点击”创建”

第三步:配置iSH并访问文件系统

  1. 打开iSH应用
  2. 首次运行时,需要安装git:
    1
    2
    apk update
    apk add git
  3. 设置git的用户信息:
    1
    2
    git config --global user.name "您的GitHub用户名"
    git config --global user.email "您的GitHub邮箱"
  4. 挂载iPad文件系统以访问Obsidian文件夹:
    1
    2
    mkdir -p /mnt/obsidian
    mount -t ios null /mnt/obsidian
    在弹出的文件选择器中,找到并选择Obsidian文件夹(主文件夹,无需进入特定vault)
  5. 使用root用户远程管理
1
2
vim /etc/ssh/sshd_config
PermitRootLogin yes # 删除前方#号

第四步:克隆GitHub仓库

法一:SSH(推荐)

  1. 设置ipad端的ssh公钥:
1
2
3
4
# 生成
ssh-keygen -t ed25519 # 回车默认地址即可
# 复制
cat ~/.ssh/id_ed25519.pub # 把~/.ssh/id_ed25519.pub换成上一步所用的地址
  1. 配置公钥到github等托管平台
  2. 进入文件夹,初始化,克隆/拉取:
1
2
3
4
5
6
7
cd /mnt/obsidian/xxx
git init
git config --global --add safe.directory /root/obsidian/xxx # 禁用安全目录
git remote add origin [ssh of repo]
git clone [ssh of repo]
# or
git pull

法二:HTTPS:(不建议)

  1. 导航到挂载的Obsidian文件夹:

    1
    cd /mnt/obsidian
  2. 查看当前目录内容,找到您的保管库文件夹:

    1
    ls
  3. 进入您的保管库文件夹:

    1
    cd 您的保管库名称
  4. 克隆您的GitHub仓库(替换为您的仓库URL):

    1
    git clone https://github.com/您的用户名/您的仓库名.git .

    注意末尾的点,表示克隆到当前目录

  5. 如需输入GitHub凭据,请提供您的用户名和个人访问令牌,其创建流程如下:

  • 登录GitHub网站
  • 点击右上角头像→Settings→Developer settings→Personal access tokens→Tokens (classic)
  • 点击”Generate new token”
  • 给令牌一个名称,如”iPad Obsidian”
  • 选择”repo”权限
  • 设置适当的有效期
  • 点击”Generate token”并复制生成的令牌(重要:令牌只会显示一次)

第五步:同步操作流程

每次使用Obsidian时:

ipad端

  1. 开始工作前:打开iSH,挂载文件系统并拉取最新更改

    1
    2
    3
    4
    # 注意:for some reason, git 操作在ish容易hang(卡住)。解决方案:
    mount -t ios-unsafe . /mnt/obsidian
    cd /mnt/obsidian/Obsidian_notes
    git pull
  2. 在Obsidian中进行正常使用和编辑

  3. 完成工作后:返回iSH提交并推送更改

    1
    2
    3
    4
    5
    cd /mnt/obsidian/Obsidian_notes
    mount -t ios-unsafe . /mnt/obsidian
    git add .
    git commit -m "iPad笔记更新"
    git push --set-upstream origin master
  4. 22端口问题,则使用老生常谈的.ssh/config方法:
    https://zhuanlan.zhihu.com/p/521340971

  5. 如果集成到了sh内,则运行命令:

1
2
obspush
obspull

集成方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Vim gitpull.sh
# add contents below:
mount -t ios-unsafe . /mnt/obsidian 
cd /mnt/obsidian/Obsidian_notes 
git pull

Vim gitpush.sh
# add contents below
mount -t ios-unsafe . /mnt/obsidian 
cd /mnt/obsidian/Obsidian_notes 
git add . 
git commit -m "iPad笔记更新" 
git push

# Enable them
chmod +x git-pull.sh
chmod +x git-push.sh
# Move them to a directory in your PATH, for example:
mv git-pull.sh /usr/bin/obspull
mv git-push.sh /usr/bin/obspush

# 然后就可以直接输入obspush, obspull来运行了。

windows端

事实上我搜到的教程都提到了obsidian的git这一美妙插件。然而令我恼火的是,git插件完全不适配移动端。

它在windows端确实好用:只需配置自动同步时间间隔,然后在需要时手动同步即可。commit也可自动插入日期。

问题总结

  1. 超大文件传输(如大部头的PDF)
    不能上传过大的PDF文档。首先用.gitignore,但.gitignore可能出问题,没用就换成git-filter-repo --path "xxx.pdf" --invert-paths之类的插件:
1
2
3
4
5
pip install git-filter-repo
git-filter-repo --path "书刊/xxx.pdf" --invert-paths --force
git push --set-upstream origin master -v
# 或者删除缓存:
git rm -r --cached .

建议在.gitignore文件中添加.obsidian文件夹,因为每个设备的Obsidian配置最好独立保存。

  1. linux命令行不熟悉
    进文件vim,编辑i,退出编辑esc,保存退出:wq,再多就得问claude了。

  2. 沟槽的ISH小bug
    多数时间都是hang在那里了。我遇到了2次hang,一次在git add .,用issue的神奇解法解决;一次在git push,后来发现是经典的22端口被防火墙屏蔽,就改成了443端口

  3. 快捷指令陷阱
    claude一直让我去弄ipad的快捷指令,搞了半天不得其法,还不如简单粗暴地mv git-pull.sh /usr/bin/obspull

总之其他同步方法收费还算有道理,因为github同步的学习成本确实高。不过一个月40块还是太夸张了,负担不起。(不如去买个claude)