搜索插件可以帮助你在仓库中查找文件。 默认情况下,你可以在左侧边栏找到搜索(放大镜图标)。你也可以通过按下 `Ctrl+Shift+F`(或 macOS 上的 `Cmd+Shift+F`)来打开搜索。 - **搜索所选文本**:如果你在编辑器中选中某一段内容并使用上述快捷键打开搜索,Obsidian 会自动显示对于该内容的搜索结果。 - **搜索最近的搜索式**:不在搜索框中输入任何内容时,搜索插件会自动提示最近使用的搜索式。你可以点击其中任何一个搜索式以再次搜索该内容。 ## 搜索式 搜索式是你在搜索框中输入的单词或短语的组合。学会编写搜索式可以让你快速找到所需要的内容,特别是在大型仓库中。需要注意的是,Obsidian 只会搜索笔记和白板中的内容。 > [!tip] 路径和文件名 > 默认情况下,搜索结果中的路径和文件名部分只包含笔记和白板的路径和文件名。要搜索仓库中任一文件的路径或文件名,请使用 `path` 或 `file` 运算符。 搜索式中,被空格分隔的内容会被视为一个独立的条件。只有文件满足所有独立条件,文件才会作为搜索结果返回。这就意味着,对于`such as` 这样的英文搜索式来说,只要文件包含了`such`和`as`,文件就会作为搜索结果返回。如果需要精确搜索`such as` 连用的情况,则需要使用英文括号括住相应内容,比如 `"such as"`。对于中文来说,通常则没有这种问题。此外,如果搜索内容包含引号,你需要在引号前添加反斜杠(`\`)来 _转义_ ,例如用 `他们说\"你好\"` 来搜索`他们说"你好"`。 总结一下: - `会议 工作` 会返回包含 `会议` 和 `工作` 的文件。 - 如果想找包含 `会议` 或 `工作` 的文件,请使用`会议 OR 工作` 你甚至可以将两者结合在同一个搜索式中。 - `会议 工作 OR 聚会 个人` 会返回同时包含`工作`和`会议`,或同时包含`个人`和`聚会`的文件。 你可以使用括号来控制每个表达式的优先级。 - `会议 (工作 OR 聚会) 个人` 会返回同时包含 `会议`、`个人` 或 `工作` 、 `聚会` 的文件。 要从搜索结果中排除某些内容,可以在条件前加上连字符(`-`): - `会议 -工作` 会返回包含 `会议` 但不包含 `工作` 的文件。 你可以排除多个条件: - `会议 -工作 -聚会` 返回包含 `会议` 但不包含 `工作` 和 `聚会` 的文件。 你可以使用括号排除组合条件: - `会议 -(工作 聚会)` 返回包含 `会议` 但不包含包含 `工作` 和 `聚会` 的文件。 > [!tip] 解释搜索式 > 傻傻分不清楚?如果你需要了解复杂搜索式的含义,可以开启搜索页中的 **说明搜索含义** 功能以获取搜索式的解释。 ## 搜索符 搜索符可以进一步限制检索条件,从而实现精确查找。 一些搜索符甚至允许在括号内嵌套搜索式,例如:`task:(电话 OR 邮件)`。 | 搜索符 | 描述 | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `file:` | 在文件名中进行查找。这可以用于搜索仓库中的任何文件。<p/>示例:`file:.jpg` 或 `file:202209`。 | | `path:` | 在文件路径中进行查找。这可以用于仓库中的任何文件。<p/>示例:`path:"日常笔记/2022-07"`。 | | `content:` | 在文件内容中进行查找。<p/>示例:`content:"快乐的猫"`。 | | `match-case:` | 搜索时区分大小写。<p/>示例:`match-case:HappyCat`。这仅对英文搜索有效。 | | `ignore-case:` | 搜索时不区分大小写。<p/>示例:`ignore-case:ikea`。这仅对英文搜索有效。 | | `tag:` | 查找标签具有某些标签的文件。<p/>示例:`tag:#工作`。<p/>**注意**:由于 `tag:` 忽略在代码块和非 Markdown 内容进行搜索,因此它比直接搜索`#具体标签`要更快更准确、。 | | `line:` | 在一行内容内进行搜索,只有文件中存在满足条件的行时该文件才会作为结果返回。<p/>示例:`line:(混合 面粉)`,文件某行需要同时包含`混合`和`面粉`两个词。 | | `block:` | 在一个块内进行搜索,只有文件中存在满足条件的块时该文件才会作为结果返回。<p/>示例:`block:(狗 猫)`,文件中某个块需要同时包含`狗`和`猫`。<p/>**注意**:由于 `block:` 需要解析每个 Markdown 文件中的内容,因此其搜索会更慢。 | | `section:` | 在一个章节内进行搜索,只有文件中存在满足条件的章节时该文件才会作为结果返回。<p/>示例:`section:(狗 猫)`,文件中某个章节需要同时包含`狗`和`猫`。 | | `task:` | 在块搜索的基础上查找特定的[[基本格式语法#任务列表\|任务]]内容。<p/>示例:`task:电话`,查找包含`电话`的任务。 | | `task-todo:` | 在块搜索的基础上查找*未完成*的[[基本格式语法#任务列表\|任务]]。<p/>示例:`task-todo:电话`,查找包含`电话`的未完成任务。 | | `task-done:` | 在块搜索的基础上查找*已完成*的[[基本格式语法#任务列表\|任务]]。<p/>示例:`task-done:电话`,查找包含`电话`的已完成任务。 | ## 搜索属性 你可以搜索包含特定[[属性]]的笔记。 你可以用方括号括起属性名称 `[属性]` 来搜索具有某个属性的笔记: - 如在搜索中输入 `[别名]` 以搜索使用了 `别名` 属性的笔记 你可以用 `[属性:值]` 这样的语法来搜索使用了某个属性、且该属性为特定值的笔记: - `[别名:名称]` 返回 `别名` 属性值为 `名称` 的笔记 属性搜索语法支持嵌套别的搜索语法,例如使用括号进行分组,使用 `OR` 搜索符,使用双引号进行精确匹配,以及使用正则表达式等等。 - 示例:`[状态:草稿 OR 已发布]` 可以搜索 `状态` 属性值为 `草稿` 或 `已发布` 的笔记 ## 更改大小写敏感度 默认情况下,搜索式不区分大小写。如果要搜索时精确匹配大小写,你可以点击搜索栏内的 **匹配大小写**按钮("Aa" 图标)。 这个设置可以自行开启/关闭。如果 **匹配大小写** 图标被高亮显示,那意味着你当前正在进行大小写敏感的搜索。再点击一下按钮,即可关闭。 ## 更改结果排序顺序 1. 输入[[#搜索式]]。 2. 在搜索结果中,点击右侧的下拉菜单。 3. 选择你想要的排序顺序。默认为"文件名(A 到 Z)"。 可以选择以下顺序: - 文件名(A 到 Z) - 文件名(Z 到 A) - 修改时间(新到旧) - 修改时间(旧到新) - 创建时间(新到旧) - 创建时间(旧到新) ## 复制搜索结果 1. 输入[[#搜索式]]。 2. 在搜索结果中,点击结果数量旁边的三个点图标。 3. 点击 **复制搜索结果**。 ## 使用正则表达式 通过正则表达式,你可以查找满足某种特征的所有内容。要在搜索中使用正则表达式,请用斜杠(`/`)括起表达式。 - 如 `/\\d{4}-\\d{2}-\\d{2}/` 将匹配满足 ISO 8601 日期格式的内容,例如 2022-01-01。 你甚至可以将正则表达式与搜索符结合使用: - `path:/\\d{4}-\\d{2}-\\d{2}/` 返回文件路径中带有日期的文件。 有关如何编写正则表达式的更多信息,请参阅[正则表达式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)。 > [!注意] > 正则表达式有不同的语法风格。Obsidian 使用 JavaScript 风格的正则表达式。 ## 配置搜索设置 要配置搜索,点击搜索栏右侧的 **搜索设置**(三排开关图标)以打开设置菜单。 | 设置项 | 描述 | | ----------- | ----------------- | | **说明搜索含义** | 分解搜索式并解释其作用。 | | **折叠搜索结果** | 是否显示搜索结果的上下文。 | | **显示更多上下文** | 展开搜索结果以显示其周围更多内容。 | ## 在笔记中插入搜索结果 要在笔记中嵌入搜索结果,你需要添加一个 `query` 代码块,然后输入搜索式: <pre><code>```query 嵌入 OR 搜索 ```</code></pre> 上面的语法效果如下: ```query 嵌入 OR 搜索 ``` > [!提示] > [[发布服务简介|Obsidian 发布服务]] 暂时不支持插入搜索结果。上述示例,仅在帮助文档本地版生效。