多个可同步工具

Obsidian

[Obsidian实现多端同步 | Kkkika](Obsidian实现多端同步 | Kkkika)

幕布

幕布在手机上记东西最舒服了,不用自己做同步,而且不用git同步,网页版也不卡,用了一段时间obsidian后,一同步冲突就会很烦。虽然后面研究Git插件的使用后设置为固定时间pull,还有固定时间同步并取消文件停止编辑再同步,解决了同步问题。但是文件编辑还是在typora,而明明弄好了obsidian怎么不直接用obsidian,而是继续用回typora

Ob使用

样式调整

typora打开

因为obsidian没有软换行,而之前用typora写的笔记在obsidian打开就会有多余空行,很难受。

后来研究之后发现是换行符的问题:

image-20260220225350499

附件路径插件

下载插件【Custom Attachment Location】

可自定义文件存储位置

修改自己想要的路径:

source是根目录,所以附件位置前面不加东西,但是blog识别是按照./../所以url格式要加./../

${noteFileName}
image-${date:YYYYMMDDHHmmssSSS}
./../${noteFileName}/${generatedAttachmentFileName}

image-20251125154641126

示例:

image-20251125154706036

image-20251125154736113

可导出为word/html

安装插件【Enhancing Export】

https://github.com/jgm/pandoc/releases

兼容typora效果

如何进入开发者

在Obsidian中按 Ctrl+Shift+I(Windows/Linux)或 Cmd+Option+I(Mac)打开开发者工具

语法解析

语法分解,代码片段解析

.cm-line:not(:has(> br:only-child)) + .cm-line:has(> br:only-child)
  • 这是一个相邻兄弟选择器+),选中两个连续.cm-line 元素
  • 前半部分.cm-line:not(:has(> br:only-child)) - 前一个
  • 后半部分.cm-line:has(> br:only-child) - 后一个
代码片段 含义 作用
.cm-line 类选择器 选中所有Obsidian编辑器行
:not(...) 否定伪类 排除符合括号内条件的元素
:has(...) 关系伪类 必须包含符合括号内条件的子元素
> 子选择器 直接子元素(不是后代)
br:only-child br标签且是唯一子元素 该行只有一个<br>元素
+ 相邻兄弟选择器 选择紧跟在后的兄弟元素

反过来不就行了

1
2
3
4
.cm-line:has(> br:only-child) +.cm-line:not(:has(> br:only-child)) {
background-color: rgba(0, 255, 0, 0.2);
margin-block-start: 8px !important;
}

CSS实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/* 
* Obsidian 自定义样式表(适配 Typora 显示标准)
* 适用场景:Obsidian 编辑模式 + 预览模式
*/

/* ===================== 1. 列表缩进统一处理 ===================== */
/* 编辑模式:列表基础缩进 - 所有层级列表统一基础缩进规则 */
.cm-s-obsidian .HyperMD-list-line,
.cm-s-obsidian .HyperMD-list-line-2,
.cm-s-obsidian .HyperMD-list-line-3,
.cm-s-obsidian .HyperMD-list-line-4,
.cm-s-obsidian .HyperMD-list-line-5,
.cm-s-obsidian .HyperMD-list-line-6 {
padding-left: 2.2em !important;
text-indent: -2.7em !important;
}

/* 编辑模式:列表嵌套缩进 - 逐级递增嵌套列表的左侧内边距 */
.cm-s-obsidian .HyperMD-list-line-2 { padding-left: 3.4em !important; }
.cm-s-obsidian .HyperMD-list-line-3 { padding-left: 4.6em !important; }
.cm-s-obsidian .HyperMD-list-line-4 { padding-left: 5.8em !important; }
.cm-s-obsidian .HyperMD-list-line-5 { padding-left: 7em !important; }

/* 列表项上下间距:为列表行添加顶部外边距(提高选择器优先级确保生效) */
body .cm-content .cm-line.HyperMD-list-line {
margin-top: 0.3em !important;
}

/* ===================== 2. 换行与空行处理 ===================== */
/* 2.1 严格换行功能(阅读模式段落内换行生效)- 暂注释未启用 */
/* .markdown-reading-view p {
white-space: pre-line;
} */

/* 2.2 Enter换行空行处理:隐藏非空行后的单个空行 */
/* 先把非空行上高提高一点 */
.cm-line:has(> br:only-child) +.cm-line:not(:has(> br:only-child)) {
margin-block-start: 8px !important;
}
.cm-line:not(:has(> br:only-child)) + .cm-line:has(> br:only-child) {
display: none;
}
/* 2.3 Enter换行空行处理:仅隐藏连续两个空行中的第二个(保留至少一个空行) */
.cm-line:has(> br:only-child) +
.cm-line:has(> br:only-child):not(:has(+ .cm-line > br:only-child)) {
display: none;
}

/* 2.4 enter+shift延续行(纯空会被删除) */
.cm-line.HyperMD-list-line-nobullet:not(:has(> span[class*="cm-list-"])) {
display: none !important;
}

/* ===================== 3. 行间距全局调整 ===================== */
/* 3.1 编辑模式:正文全局行高 */
.cm-s-obsidian .cm-line {
line-height: 1.6 !important; /* 全局行高 */
}

/* 3.2 编辑模式:各级标题上下内边距(控制标题与其他内容的间距) */
.cm-s-obsidian .cm-header {
padding-top: 0.3em !important;
padding-bottom: 0.1em !important;
}

/* ===================== 4. 图片样式统一(编辑+预览模式) ===================== */
/* vh 说明:视口高度单位,1vh = 1%视口高度,无需依赖父元素高度 */

/* 4.1 编辑模式:图片容器样式 */
.markdown-source-view .cm-content img,
.markdown-source-view .image-embed img,
.cm-s-obsidian .cm-widgetBuffer + img {
display: block !important;
margin: 1.5em auto !important;
text-align: center !important;
max-height: 40vh !important;
width: auto !important;
}

/* 4.2 预览/阅读模式:图片容器样式 */
.markdown-preview-view img {
display: block !important;
margin: 1.5em auto !important; /* 上下1.5em,左右auto居中 */
max-height: 40vh !important; /* 限制最大高度为视口的40% */
width: auto !important; /* 保持图片原始宽高比 */
border-radius: 3px !important; /* 可选:轻微圆角优化视觉 */
}

插件的配置

Git插件


Quiet Outline插件

常规设置

  • 默认层级:H2,比较舒服
  • 自动展开:展开同时折叠剩余标题至设置层级(层级切换器),这样比较舒服

一定要

用着用着我突然发现,这个文件老是频繁改动:

image-20260221000804655

我要把它忽略提交,详细操作:

Step1,拉取最新和删除文件:

1
2
3
4
5
# 先拉取最新的仓库内容(确保本地和远程同步)
git pull

# 删除远程仓库中的目标文件(--cached 表示只删仓库里的,保留本地文件)
git rm --cached .obsidian/plugins/obsidian-quiet-outline/markdown-states.json

Step2,忽略提交:

在仓库的.gitignore文件夹里添加:

.obsidian/plugins/obsidian-quiet-outline/markdown-states.json

Step3,推送:

1
2
3
4
5
6
7
8
# 暂存
git add .

# 提交删除操作
git commit -m "移除不需要追踪的 markdown-states.json 文件"

# 推送到远程仓库(完成远程文件删除)
git push

Ob自制

图片url自定义

  • prompt

    1
    2
    3
    4
    5
    6
    7
    做一个obsidian插件,可以用就行,用最精简的方式实现如下功能:

    批量修改Markdown 内联图片格式,自定义的相对路径
    图片附件链接路径![](...),将附件链接修改成指定自定义格式:如![./../文档文件名/原附件名]()
    - 设置里可选择开始执行/保持执行(加监听)
    - 设置里可选择附件是移动还是复制
    - 设置里可选择制定文件/文件夹
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    帮我的插件写一个readme

    一个完整的插件文档可以包含以下几个部分,你可以根据自己的插件复杂度来取舍:
    •封面页:插件名称、一句话介绍、作者和版本号。
    •简介:这个插件是做什么的?一句话讲清楚它的核心价值。
    • 安装指南:一步步教自己(或别人)如何安装和配置插件,包括所有依赖项。
    • 快速上手:用最简单的步骤演示插件最核心的功能,让使用者3分钟内看到效果。
    •功能详解:分模块详细介绍每个功能、按钮或配置项的作用。
    •配置/自定义:如果插件支持个性化设置,这里要详细说明如何修改配置文件或参数。
    •常见问题(FAQ):预测自己未来可能会遇到的问题,比如“为什么没反应?”、“怎么导出数据?”并给出答案。
    •已知问题:诚实地列出插件目前还存在的 bug 或限制。

未引用附件

1
2
3
做一个obsidian插件,可以用就行,用最精简的方式实现如下功能:
找出不被markdown引用的本地附件
在查看时可以选择删除

Blog

快速部署,有exe和bat两种好用的方法,双击就可以运行命令行。

部署到github,cgd.exe:

C:\Windows\System32\cmd.exe /k "cd C:\Code\KikaBlog\blog && hexo c && hexo g && hexo d"

备份到gitee,gitee.bat:

1
2
3
4
5
6
@echo off
cd /d "C:\Code\KikaBlog\blog"
git add -A
git commit -m "update"
git push
pause

把上面两个升级成一个双击即可完成部署和备份,先查环境路径:

1
2
where hexo
where git

Blog.bat:

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
:: 进入博客目录
cd /d "C:\Code\KikaBlog\blog"

:: 用绝对路径调用 hexo
call "C:\Users\A\.npm-global\hexo.cmd" clean
call "C:\Users\A\.npm-global\hexo.cmd" generate
call "C:\Users\A\.npm-global\hexo.cmd" deploy

:: 用绝对路径调用 git
call "C:\Program Files\Git\cmd\git.exe" add -A
call "C:\Program Files\Git\cmd\git.exe" commit -m "update"
call "C:\Program Files\Git\cmd\git.exe" push

Windows 任务计划程序(推荐)

  1. 打开”任务计划程序”
    • Win + R,输入 taskschd.msc
    • 或搜索”任务计划程序”
  2. 创建基本任务:
    • 右侧点击”创建基本任务”
    • 名称:Blog自动部署
    • 触发器:选择”每天”,设置时间13:00:00
    • 操作:选择”启动程序”
      • 程序或脚本:cmd.exe
      • 参数:/k "cd C:\Code\KikaBlog\blog && hexo clean && hexo g && hexo d"
      • 起始于:C:\Code\KikaBlog\blog

image-20260113174429095

image-20260113174634453