搜索插件可以帮助你在仓库中查找文件。
默认情况下,你可以在左侧边栏找到搜索(放大镜图标)。你也可以通过按下 `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 发布服务]] 暂时不支持插入搜索结果。上述示例,仅在帮助文档本地版生效。