惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
量子位
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
雷峰网
雷峰网

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Obsidian技巧:通过多个标签快速定位文件(by TagFolder) - 少...
2023-09-09 · via 少数派

前言

最近发现一款特别好用的标签插件:Tag Folder,可以像文件夹一样显示 Obsidian 的标签:

最主要的功能是通过它获取的标签文件列表可以快速定位到某一个文件,如何设置下图,不想 Obsidian 自带的标签点击后要搜索一会儿才会出结果,这个是直接列出存在标签的文件。

关闭未标记文档归类到根目录下的选项

默认设置是会把没有打标签的文档归类到根目录下,像我这种一开始没有怎么打标签的人,这种空白的标签的文档有很多,在设置里面可以把这个选项关了。

它会把没打标记的文档归类到 _untagged 的虚拟标签文件下,并不会真的给你的文档打上 _untagged 标签。

排除不想要的标签

不过如果你不喜欢这个 _untagged 标签,不想把它显示在界面下,或者不想让某个的标签显示到界面上时,同样可摘设置里面设置排除标签选项:

这里面的其他的一些选项就不逐一介绍了,插件本身设置选项就介绍的很清楚了。

建立标签分级面板

我主要关注的功能是这个功能:"点击标签时,在标签文件夹内搜索标签":

并且当你按住 Ctrl 键继续单击其他标签时,它会继续加上该标签达到多重标签筛选的效果,这就引起我的兴趣了,就是说如果我建立了一个类似标签面的存在,我只需要通过点击我想要的标签就可以快速筛选,我个人比较喜欢 Zotero 一行行排序起来的标签,不过 Obsidian 里面大多数是嵌套,排序的话就太多了,于是就想利用 Catllout 来对每个标签等级为一级的标签作为一个 Catllout 收集,然后下面就是它的子标签,且并不显示父标签,就是像 Zotero 那样直接单独显示一个子标签,实现结果如下:

dataviewjs 代码

```dataviewjs
let tags = {};
dv.pages("").file.etags.distinct()
  .filter(t => {
    const levels = t.split("/");
    return levels.length >= 1 // 选择标签等级大于等于1的标签
  })
  .filter(t => dv.pages(t).length >= 1) // 去除长度小于1的标签
  .filter(t => t.trim() !== '') // 去除等于空的标签
  .filter(t => /电脑编程|知识管理|可视化|软件工具|科研绘图/.test(t)) // 只显示包含指定内容的标签(|:或,&&:与)
  .forEach(t => {
    const levels = t.split("/");
    const firstLevel = levels[0];
    const lastLevel = levels[levels.length - 1].replace('#', ''); // 获取最后一级的标签并去除 "#"
    if (!tags[firstLevel]) {
      tags[firstLevel] = [];
    }
    tags[firstLevel].push(`[#${lastLevel}](${t})`+"("+dv.pages(t).length+")"); // 给每个标签加上 "#"
  });

let result = '';
for (let firstLevel in tags) {
  result += '> [!example]- '+firstLevel + '\n\t> ' + tags[firstLevel].join('、') + '\n\n';
}

dv.paragraph(result);
```

标签面板的一些微调

我这边规定了只显示我想要显示的一级标签,如果你想要显示 Obsidian 笔记中所有的标签,请删除这段:

.filter(t => /电脑编程|知识管理|可视化|软件工具|科研绘图/.test(t)) // 只显示包含指定内容的标签(|:或,&&:与)

还有如果你想要 1 到 2 级的标签,也可以进行修改,将 return levels.length >= 1; // 选择标签等级大于等于1的标签 替换为下面的代码:

return levels.length >= 1 && levels.length <= 2;// 选择标签等级大于等于1小于2的的标签

如果你不希望标签数量很少的标签进行显示则修改 .filter(t => dv.pages(t).length >= 1) // 去除长度小于1的标签 为:

.filter(t => dv.pages(t).length >= 5) // 去除标签数量小于5的标签

其他一些优化设置

缩小指定面板的字体

如果你先把该标签面板固定到一侧,当字体不想太大,也不想随着鼠标滚轮变动,同时如果你开了 显示标签页标题栏 的选项时,页面也不想显示,这里有一个 CSS Snippets 可以帮助你解决这个问题,需要在该笔记的 yaml 区的 cssclass 声明 .small-font

---
cssclasses:
  - small-font

---
/* 输定字体大小 */
.small-font.markdown-preview-view {
  font-size: 16px !important;
  line-height: 180%;
}

/* 关闭显示标签页标题栏。 */
.small-font.markdown-preview-view .mod-header .inline-title {
  display: none;
  line-height: 0px;
  /* text-align: right; */
}

如何设定笔记图标

当你固定到到一侧时,又有一个问题出现了,自带的笔记页面的图标不好看,你想换个好看点的,没问题!Icon Folder 插件 完美解决你的问题,它提供可以给笔记或者文件夹更换 ICON,可以在插件市场进行下载安装。

第一次安装要手动下载它提供的 icon 包:

之后对着你要更改图标的笔记右键的下拉菜单中选择 Change icon 在弹窗中你想要图标就行了

推荐一个标签样式 by serenity 主题

该标签样式片段来自 serenity 主题

/* ================== tags ==================== */
body {
  --tag-radius: var(--radius-s);
  --tag-padding-x: 6px;
  --tag-padding-y: 2px;
  --tag-opacity: 0.25;
  --tag-opacity-hover: 0.2;
}


a.tag,
.cm-hashtag {
  background-color: var(--tag-rb) !important;
}
a.tag:hover {
  background-color: var(--tag-rb-hover) !important;
}

.theme-light a.tag,
.theme-light .cm-hashtag {
  color: var(--tag-rb-text-light) !important;
}
.theme-dark a.tag,
.theme-dark .cm-hashtag {
  color: var(--tag-rb-text-dark) !important;
}

a.tag:nth-child(7n+1), /*reading mode*/
:is(.cm-hashtag:nth-child(14n+1), /*live preview*/
.cm-hashtag:nth-child(14n+2)) {
  --tag-rb-text-light: hsl(var(--accent-h), 60%, 30%);
  --tag-rb-text-dark: hsl(var(--accent-h), 40%, 80%);
  --tag-rb: hsl(var(--accent-h), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(var(--accent-h), 50%, 60%, var(--tag-opacity-hover));
}

a.tag:nth-child(7n + 2),
:is(.cm-hashtag:nth-child(14n + 3), .cm-hashtag:nth-child(14n + 4)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 51), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 51), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 51), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 51),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

a.tag:nth-child(7n + 3),
:is(.cm-hashtag:nth-child(14n + 5), .cm-hashtag:nth-child(14n + 6)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 102), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 102), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 102), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 102),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

a.tag:nth-child(7n + 4),
:is(.cm-hashtag:nth-child(14n + 7), .cm-hashtag:nth-child(14n + 8)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 153), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 153), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 153), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 153),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

a.tag:nth-child(7n + 5),
:is(.cm-hashtag:nth-child(14n + 9), .cm-hashtag:nth-child(14n + 10)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 204), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 204), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 204), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 204),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

a.tag:nth-child(7n + 6),
:is(.cm-hashtag:nth-child(14n + 11), .cm-hashtag:nth-child(14n + 12)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 255), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 255), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 255), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 255),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

a.tag:nth-child(7n + 7),
:is(.cm-hashtag:nth-child(14n + 13), .cm-hashtag:nth-child(14n + 14)) {
  --tag-rb-text-light: hsl(calc(var(--accent-h) + 306), 60%, 30%);
  --tag-rb-text-dark: hsl(calc(var(--accent-h) + 306), 40%, 80%);
  --tag-rb: hsl(calc(var(--accent-h) + 306), 50%, 60%, var(--tag-opacity));
  --tag-rb-hover: hsl(
    calc(var(--accent-h) + 306),
    50%,
    60%,
    var(--tag-opacity-hover)
  );
}

最后你自己设定的标签面板就大功告成了!希望本文对您有所帮助。