文件内搜索与待办

在文件与文档中搜索

观看视频搜索笔记 00:15

要在侧边栏的搜索标签中进行全局搜索,请使用 Ctrl+Shift+F。 它使用 ripgrep,支持正则表达式・区分大小写・全字匹配・批量替换。 在当前文件内,用 Ctrl+F 查找,Ctrl+H 替换。在结果上,右键菜单可以打开文件、复制路径并在资源管理器中显示,从结果中移除 会把该文件从列表中去掉:全部替换 不再修改它,确认时也只统计剩下的文件。

搜索同样覆盖文档。除了 .md 笔记,它还会读取 PDF、电子表格 (.xlsx/.ods)、Word 文档 (.docx)、LibreOffice 文本 (.odt)、演示文稿 (.pptx) 和电子书 (.epub) 中的文字。AI 聊天和按含义 搜索同理。命中 PDF 时,文件会在该片段所在的页面打开。提取出的文字存放在工作区 之外的缓存中,文件改动时自动更新,文件被删除后也随之清除。 第一次是要花时间的:打开一个有很多 PDF 的工作区会启动一次要几分钟的提取,在它结束之前,这些文档还没有进入搜索。搜索标签页会在过程中说明这一点(正在准备文档(80 个中的 12 个)),并在可以重新搜索时提醒你。从第二次开始,只重做变动过的文件。

同样支持:.rtf、.xps/.oxps、LibreOffice 演示文稿(.odp)、视频字幕(.srt/.vtt)、纯文本表格(.csv/.tsv)、已保存的网页(.html/.mhtml)、归档邮件(.eml)、Jupyter 笔记本(.ipynb)、文献目录(.bib/.ris)以及纯文本文件(.txt)。 文本标记语言有自己的读取器:reStructuredText(.rst)、AsciiDoc(.adoc)、Org(.org)和 Typst(.typ)。章节变成标题,列表和表格变成本应用的写法,公式会被绘制,序言则不入索引:否则 #set page(...) 和 :stem: latexmath 会变成索引片段,章节名也不会随正文一起传递。字幕中的命中会打开说出这句话的时刻。

扫描版 PDF 不会悄无声息地消失。有页面却没有文字的文档(每页都是图片,没有 OCR)会带着一行说明进入索引,搜索标签页也会告诉你有多少个——没有这句话,你会去找书里确实有的词,找不到,然后以为搜索坏了。 你也可以让它变得可读:装上 Tesseract 之后(LightNote 会引导你一键安装),PDF 的 ⋯ 菜单里会出现识别文字(OCR)…。它每个文档只跑一次,可能要几分钟——跑完之后,这些文字就和其他 PDF 一样进入索引。搜索标签页的提示会带你到第一个这样的文档。

缓存以明文保存文本。它位于你的用户文件夹,在工作区之外:能访问它的人就能在那里读到你文档的内容,即使原件存放在加密磁盘上。.lne 文件(加密笔记)从不进入缓存——它存在的意义正是不在磁盘上可读。

LaTeX 由专门的读取器处理。.tex 文件不会被当作纯文本读取:导言区被排除在外,\section 变成标题,\cite 变成 [@key],公式原样通过 —— 绘制它的正是绘制你笔记中数学公式的那个引擎。命中会在它来源的那 一行打开文件。文件的右键菜单里(文件打开时也在标签页的工具栏里)有导入为笔记 (.md): 笔记就建在旁边,.tex 仍留在原处,导入两次也不会覆盖。反方向是笔记工具栏上的导出为 LaTeX (.tex)...。

文档预览与源代码

打开文档会显示文字预览。.docx、.odt、 .epub 或 .pptx 以只读方式打开,显示提取出的文字和文档中的图片 —— 没有 Word 样式、图片的定位、复杂表格或修订记录。标签页仍然是该文档:名称、文件夹和 会话都指向它,而不是缓存。.xlsx 电子表格仍在表格视图中打开,那里能看到 更多内容。

源代码也可以进入按含义搜索。在工具 → 工作区 → 工作区配置...里有把源代码纳入按含义搜索:代码文件会和笔记一起被索引,每个函数或类一个片段——这正是「超时是在哪里处理的?」这类问题能命中整个函数、而不是在 if 中间被截断的片段的原因。它尊重 .gitignore。默认关闭,且按文件夹设置:笔记变化很慢,代码整天都在变,一个正在开发的仓库会产生几万个片段——每一个都是你的嵌入提供方要计费的调用。

导入文档和其他应用

观看视频从 Notion 导入 00:21

把文档变成笔记。通过文件 → 将文档导入为笔记...(可一次多个)、树的右键菜单,或预览本身的导入为笔记 (.md)按钮,.docx、.odt、.epub、.rtf、.pptx、.html、.eml、PDF 或 LaTeX 会变成文件旁边一条可编辑的笔记。一起过来的有带标题、列表、链接和表格的文字、脚注、变成 LaTeX 公式的 Word 公式,以及图片——图片保存在笔记旁边的 附件 文件夹里。文档的标题、作者和日期成为属性,source 说明笔记来自哪个文件。原文件仍留在原处——导入不是转换——,再次导入会创建 名称 02.md,而不会覆盖您编辑过的内容。Jupyter 笔记本(它会变成块)、.csv(以表格打开)、.bib/.ris 文献(引用直接读取它)和源代码不会出现这个选项。结构来自文档的样式:即使样式名称被翻译,也能识别 Word 的标题;字符样式带来粗体、斜体和代码,引用和代码段落变成我们的块,自动目录变成一个由笔记保持更新的 [TOC];从 .rtf 带来列表、表格和链接,从 HTML(包括 Word 和 Google 文档保存的)和 EPUB 带来标题、嵌套列表和表格。文档作为活动中心中的一项任务在后台读取:转换大型 PDF 时窗口仍可操作,停止会在下一个文件之前结束导入。

查看这个文件夹用了多少其他编辑器的写法。 在 工具 → 检查文件夹兼容性... 中,LightNote 会读取已打开文件夹里的笔记,并把找到的内容分成三组:它会绘制的(维基链接、嵌入、标注、标签、高亮、公式、脚注、任务、块标记);保留在文件中但不绘制的(插件查询 dataview、tasks、query,.canvas 画布,.base 数据库,以及块嵌入);以及可以转换为本应用写法的内容。是否转换由你决定,绝不会是保存的副作用:勾选结构,查看并排预览并确认——每个被修改的文件在写入前都会记入文件历史,有未保存更改的打开文件不会处理。目前有两项转换,在 Obsidian 那边都不会有任何损失(那边两种写法都能读):指向本文件夹的 obsidian:// 链接变为 [[笔记]](指向其他仓库的不会转换,因为那会改变目标),行内脚注 ^[文本] 变为 [^n],定义放在末尾。

把整个 Notion 资料搬过来。在 Notion 中使用 Export → HTML(或 Markdown & CSV)并勾选 Include subpages,把下载的 .zip(或文件夹)放进工作区,建好目标文件夹,然后运行 lnote vault-import --path <导出> --out <目标>(也可以在 AI 助手里用 vault_import 工具)。不需要解压,整个工作区的导出里面还套着一个 .zip,也一样。每个页面会变成一则笔记:页面属性变成笔记属性,Notion 的彩色标注变成这里的框(HTML 里由颜色决定类型;Markdown 不保存颜色,框会作为普通提示到达),待办会带着勾选状态到达,公式会变成 LaTeX 公式,折叠块会变成 <details> 框(折叠标题会变成标题),页面目录会变成 [TOC],页面之间的链接会被改写到新笔记上——两个同名页面可以共存,因为第二个会变成 名称 02.md,而链接仍然指向正确的那一个。数据库会作为 .csv 复制到 Anexos。在 Notion 里写的 #话题 仍然是文字:它在那里不是标签,在这里也不会变成标签。不会覆盖任何东西,旁边还会写下一则报告笔记,说明进来了多少笔记和附件,并列出没有找到目标的链接——这些链接保持原样。

这个操作就在菜单里。文件 → 从其他应用导入... 会打开助手:选择你导出的文件夹或 .zip(Evernote 的 .enex 也可以),来源应用会通过文件名的形式识别 — 如果没有识别出来,就在旁边的列表里选一个。整个文件夹都会被读取,包括子页面。目标位置已经填好了工作区里的一个新文件夹,以应用命名,这样导入的资料不会和你自己的笔记混在一起。读取和写入都在窗口之外运行,最后屏幕会说明进来了多少条笔记和附件,以及改写了多少条链接。

支持五个应用。Notion 用以 HTML 或 Markdown 导出的文件夹或 .zip;Evernote 用 .enex;Joplin 用 .jex(或 MD + Front Matter 文件夹);Logseq 用图谱文件夹 — 里面有 logseq/config.edn 的那个;Roam Research 用导出的 .json。在所有这些里,笔记本和命名空间都会变成文件夹,日志会以 yyyy-MM-dd 的名字放进日记文件夹,任务变成 - [ ],高亮变成 ==像这样==,块引用变成那个块的文字加上它所在页面的链接 — 其他应用的语法不会进入你的工作区。这里没有对应写法的内容,例如 Logseq 的查询或 Roam 的表格,会保留为行内代码,报告会说明出现了多少次。

高亮、标记与待办

高亮与标记是两回事。快速查找(Ctrl+F)只是用琥珀色高亮匹配项: 这是临时的,关闭查找栏或清空输入框后就会消失。而编辑 → 高级查找…中的标记全部 则是你的主动决定——它把匹配项涂成红色,并在对应的行上添加书签(边栏上的蓝色圆点), 直到你使用清除标记为止。两者互相独立:关闭快速查找不会抹掉你标记的内容, 清除标记也不会抹掉查找的高亮。二者都会显示在缩略图的标记条上,各用各的颜色。 清除标记只会删除标记全部添加的圆点:你自己用(Ctrl+F2)在匹配行上加的书签会保留下来。

侧边栏的待办章节会把代码中的 TODO/FIXME 标记以及工作区 Markdown 笔记中的任务 (- [ ])汇集到一处。单击即可直接跳转到对应行。此文件夹中 .lnt 看板的未完成卡片单独成组,即看板卡片,日期最近的排在最上面;单击即可打开看板。代码块中的复选框不计入——那只是示例,在这里勾选会写进代码示例里——模板和提示词文件夹中的内容也不计入,因为那是样板。卡片的日期写在标题前面,若是今年则省略年份;顶部一行统计代码待办、任务和卡片的数量。列表会在打开该部分时以及单击刷新按钮时重新生成;勾选任务的复选框会在笔记中写入 [x],状态栏中的任务计数也会随即更新。

该部分顶部有一个月历,圆点与日历窗口相同,但只显示此文件夹的内容:带日期的任务、看板卡片以及 ```calendar 代码块中的事件(整个应用只有一篇的每日笔记也会显示)。单击某一天只显示那一天的内容,顶部是当日分组——每日笔记,或创建这一天的笔记;点清除或再次单击同一天即可回到完整列表。代码中的 TODO 没有日期,筛选开启时会隐藏。日历 · 此文件夹按钮可以收起月历,只看代码中的待办。只有仍未完成的卡片会在月历上标记;所选日期的卡片留在它们自己的分组中,当日分组还会列出当天代码块中的事件。