isaaclyman/novel-word-count-obsidian

GitHub: isaaclyman/novel-word-count-obsidian

Obsidian 插件,实时在文件侧边栏显示字数、阅读时长等多维统计。

Stars: 143 | Forks: 14

# Obsidian 的 Novel Word Count ![一张截图,显示了文件浏览器窗格中每个文档、文件夹和库旁边略带透明的字数统计。](https://raw.githubusercontent.com/isaaclyman/novel-word-count-obsidian/master/readme-screenshot-2.png) 此插件会在文件浏览器窗格中每个文件、文件夹和库的旁边显示您选择的统计数据。它会在您写作时实时更新。 ### 设置 **要显示的数据。** 您可以选择最多三种数据类型并排显示。可从以下选项中进行选择: | 数据类型 | 描述 | 备注 | | --------- | ----------- | ----- | | **字数统计** | 总字数。 | 默认情况下,“字词”是任何非空白字符序列。要更改此设置,请参阅高级 > 字数统计方法。 | | **页数统计** | 总页数,向上取整。 | 默认情况下,一页为 300 字。要更改此设置,请参阅高级 > 页数统计方法。 | | **页数统计(小数)** | 总页数,精确到小数点后 2 位。 | 适用于页数统计的任何设置也适用于页数统计(小数)。 | | **阅读时间** | 阅读每条笔记的估计时间。 | 默认情况下,此计算标准为每分钟 265 字(欧洲语言)或每分钟 500 字符(CJK)。要更改此设置,请参阅高级 > 每分钟字数/每分钟字符数。 | | **% 字数目标** | 每条笔记字数目标的百分比。 | 请参阅下方的[*设置目标*](#setting-goals)。 | | **字符数统计** | 总字符数(字母、符号和数字)。 | 默认情况下包含空白字符。要更改此设置,请参阅高级 > 字符数统计方法。 | | **笔记数量** | 总笔记数。 | 许多人更喜欢仅在文件夹上显示此信息;为此,请关闭“在文件夹上显示相同数据”并将其配置为文件夹的数据类型。 | | **换行数** | 总行数。 | 按换行符或 Markdown 代码行数计算;不等于您在书中计算行数的方式。 | | **链接数量** | 指向其他笔记的[链接](https://help.obsidian.md/Getting+started/Link+notes)总数。 | 仅计算内部链接;Obsidian 不计算指向网页的链接。 | | **嵌入数量** | [嵌入](https://help.obsidian.md/Linking+notes+and+files/Embedding+files)的图像、文件和笔记总数。 | | | **首个别名** | 每条笔记的第一个[别名](https://help.obsidian.md/Linking+notes+and+files/Aliases)。 | 如果笔记没有别名,则不显示任何内容。由于文件夹没有别名,因此它们也不显示任何内容。 | | **创建日期** | 笔记创建的日期。 | 在文件夹上,这会显示该文件夹中所有笔记的最早创建日期。 | | **最后更新日期** | 笔记最后一次更新的日期。 | 在文件夹上,这会显示该文件夹中所有笔记的最新编辑日期。 | | **文件大小** | 硬盘上的总大小。 | | | **Frontmatter 键** | 笔记 [Properties](https://help.obsidian.md/Editing+and+formatting/Properties) 中的任何指定键。 | 此数据类型没有自动前缀、后缀、缩写或格式化。您可以按照自己喜欢的格式排版 frontmatter,或者[考虑使用插件](https://obsidian.md/plugins?search=frontmatter)来生成它。 | **缩写描述。** 启用此选项可显示缩短的计数: | 完整描述 | 缩写 | | ---------------- | ----------- | | 3,250 words | 3,250w | | 30 pages | 30p | | 45% of 2,000 | 45% | | 23,800 characters | 23,800ch | | 12 notes | 12n | | 18 lines | 18¶ | | 25s read | 25s | | 5m read | 5m | | 2h5m read | 2h5m | | 3 links | 3x | | 5 embeds | 5em | | alias: july +3 | july | | Created 1/22/2022 | 1/22/2022/c | | Updated 1/22/2022 | 1/22/2022/u | | 13.39 KB | 13.39kb | *注意:* 通过启用“使用高级格式”开关,您可以为大多数计数类型设置自己的后缀(或完全隐藏后缀)。 **对齐方式。** 选择相对于文件/文件夹名称显示数据的位置:内联、右对齐或下方。所有对齐方式均与原生 Obsidian 配合良好,但内联方式与自定义主题和插件的兼容性最佳。 **文件夹:与笔记数据相同。** 默认情况下,笔记和文件夹上会显示相同的数据类型。您可以关闭此设置,以选择仅在文件夹上显示的不同数据类型。 **根目录:与笔记数据相同。** 默认情况下,笔记和库本身会显示相同的数据类型。您可以关闭此设置,以选择仅在库上显示的不同数据类型。 **标签透明度。** 默认情况下,计数数据以 0.75 的透明度值(即 25% 透明)显示。您可以分别调高或调低此值,以使文件浏览器中的标签更加可见或更不可见。 **包含文件/文件夹名称。** 仅计算路径与指定词汇匹配的笔记文本。此设置区分大小写,并以逗号分隔。任何以 `!` 开头的词汇将被_排除_而非包含。必须至少匹配到一个文件,否则该设置将被忽略。_例如:_ 如果您将其设置为 `Included, CountMe`,它将匹配名为 `Included`、`Included Folder`、`CountMe Please`、`My Included CountMe` 等的文件夹,以及名为 `Included.md`、`CountMe Note.md` 等的笔记,但_不_匹配名为 `included`、`countme` 或 `somethingelse` 的文件夹或笔记。如果您的库中没有包含 `Included` 或 `CountMe` 词汇的文件夹或笔记,该设置将被忽略,并计算所有笔记。如果您将其设置为 `!Excluded, CountMe`,它将匹配包含词汇 `CountMe` 的文件夹和文件,_除非_它们的路径中也包含词汇 `Excluded`。 **排除注释。** 从字符数、字数和页数中排除任何被 `%%` [注释标记](https://help.obsidian.md/Editing+and+formatting/Basic+formatting+syntax#Comments) `%%` 或 `` 包围的内容。这可能会降低在超大笔记或库中的性能。 **排除代码块。** 从字符数、字数和页数中排除任何被 `` ``` `` 反引号包围的内容。包含 DataView 片段。这可能会降低在超大笔记或库中的性能。 **排除链接的不可见部分。** (从所有计数中)排除您在阅读视图中看不到的任何链接部分。对于外部链接(例如 `[see example](https://uri)`),这将排除 URI。对于具有别名的内部链接(例如 `[[note name|alias]]`),这将排除笔记名称。 **字符数统计方法。** 选择是计算所有字符还是排除空白字符(空格和换行符)。 **字数统计方法。** _此设置已被移除。_ 在最新版本的插件中,空格分隔和 CJK 计数已合并。任何语言的笔记都应能正确计数,包括混合语言笔记。 **页数统计方法。** 选择是按字数(默认:300)还是字符数(默认:1500)来计算页数。您可以更改所使用的字数/字符数。 **每分钟字数/CJK 每分钟字符数。** 设置每分钟的字数(默认:265)和 CJK 字符数(默认:500)。阅读时间的计算方式为 \[字数除以每分钟字数\] 加上 \[CJK 字符数除以每分钟字符数\]。 **每页字数/每页字符数。** 根据所选的 _页数统计方法_,设置每页的字数或字符数。 **重新分析所有文档。** 触发对库中所有文档的重新计数。如果您在 Obsidian 之外进行了更改,此功能非常有用。(此命令可绑定快捷键。) **Debug 模式。** 向开发者控制台启用调试输出,如果您需要报告问题,这可能会有所帮助。 ### 设置目标 要为笔记设置字数目标,请添加 `word-goal` 属性: Obsidian properties with a single property 'word-goal' set to 100 不允许使用逗号分隔符——该值只能包含数字。 在文件夹上,_所有设置了目标的笔记_的总字数将与所有字数目标的总和进行比较。 ### 排除笔记 要将笔记从所有计数中排除(_除了_笔记数量、创建日期、最后更新日期和文件大小),请将 `exclude-from-word-count` [标签](https://help.obsidian.md/Editing+and+formatting/Tags)添加到 [properties](https://help.obsidian.md/Editing+and+formatting/Properties) 中。 Obsidian properties with a single property 'tags' containing one chip with text 'exclude-from-word-count' (插件可以识别任何大小写、带或不带连字符/下划线的标签,因此您可以遵循自己喜欢的标签语法,例如 `ExcludeFromWordCount`、`Exclude_from_word_count` 等。) 或者,您可以将 `wordcount` 属性设置为 `false`。此属性必须始终为小写,且不能包含连字符或下划线。 有关包含/排除某些笔记的另一种方法,请参阅“包含文件/文件夹名称”的设置说明。 Obsidian properties with a single property 'wordcount' set to an empty checkbox ### 安全性 Novel Word Count 完全兼容 Obsidian 1.4+。 此插件将您的库视为只读。它从不修改、删除或重命名任何文件或文件夹。它使用所有文件的缓存读取来提高性能。 Obsidian 的 API 不提供对文件浏览器窗格的契约式访问,因此此插件使用 duck typing 来查找它。这从技术上讲是无文档记录的,因此 Obsidian 的重大更新有可能会暂时导致错误。如果且当这种情况发生时,此插件被设计为优雅地失败。在这种不太可能发生的情况下,您可能希望禁用该插件,直到它被更新。 此插件对文件浏览器 DOM 的影响极其微小,仅包含一个自定义 HTML 属性和一些 CSS 规则。样式修改仅在插件开启时生效。 Novel Word Count 不会通过 Internet 传输任何数据。所有数据均存储在本地。 ### 安装插件 在社区插件浏览器中搜索“novel word count”,或使用[此链接](https://obsidian.md/plugins?id=novel-word-count)。 ## 面向开发者 ### 开发设置 - Clone 此 repo。 - `npm i` 或 `yarn` 安装依赖。 - `npm run dev` 以在 watch 模式下启动编译。 - `npm run dev-style` 以在 watch 模式下启动样式表编译。 ### 创建新版本 - 运行 `npm run build` 以确保 main.js 和 styles.css 是最新的。 - Commit 更改。 - 运行 `npm version {major|minor|patch}` 更新 manifest 和 package.json。 - 将 commit Push 到远程。 - 在 GitHub 上创建新的 release 和 tag,两者均以版本号命名,例如 `2.4.1`,不带“v”。附加文件 main.js、styles.css 和 manifest.json。 ### 在本地运行插件 访问 [Releases 页面](https://github.com/isaaclyman/novel-word-count-obsidian/releases)。将 `main.js`、`styles.css` 和 `manifest.json` 下载到您的库的 `VaultFolder/.obsidian/plugins/novel-word-count/` 目录下。
标签:Obsidian插件, 写作辅助, 字数统计, 效率工具, 笔记统计, 自动化攻击