搜索
在zim中有两种搜索方式:在页面内搜索,称为查找,以及跨多个页面搜索,称为搜索。
查找
"搜索->查找..."菜单项会在页面底部触发一个搜索框。通过在这里输入单词,您可以在当前页面中查找该单词的出现位置。您可以使用<Alt>N
和<Alt>P
或<Ctrl>G
和<Shift><Ctrl>G
快捷键来跳转到下一个/上一个出现位置。如果找不到您输入的单词,搜索框会变红,按钮会变为不可用状态。
区分大小写复选框使搜索区分大小写。高亮复选框切换缓冲区中所有结果的高亮显示。
查找和替换
"搜索->替换..."菜单项会触发当前页面中的"查找和替换"对话框。"下一个"和"上一个"按钮可用于跳转到下一个或上一个出现位置而不替换。"替换"按钮可用于仅替换一个出现位置。"全部替换"按钮可用于一次性替换当前页面中的所有出现位置。
区分大小写复选框切换大小写敏感性。默认情况下,搜索不区分大小写。但在查找名称或缩写时,匹配大小写可能会很有用。
整词匹配复选框切换是否包含部分单词匹配。这在寻找相当短的单词时特别有用。
正则表达式复选框切换高级搜索和替换,其中可以使用"正则表达式"来匹配文本模式。启用此选项时,替换字符串中的转义字符也将被展开,并且模式中的组可以在替换字符串中被引用。有关正则表达式语法的详细信息,请参阅Python文档。
高亮复选框切换缓冲区中所有结果的高亮显示。
搜索
"搜索->搜索..."菜单项会触发搜索对话框弹出。此对话框允许您搜索包含特定单词的页面。您可以同时打开多个搜索对话框。
您不仅可以搜索多个单词,而且zim还允许使用更精细的搜索查询。有关此对话框支持的高级用法查询语法,请参见下文。
普通搜索会遍历笔记本的所有页面。特殊搜索,如搜索链接或页面名称,只搜索索引的一部分,相应地更快,这对于包含数百至数千页面的大型笔记本可能很重要。
反向链接
这是搜索菜单中的最后一项。作为特殊情况,您可以搜索页面名称。不是进行"全文搜索",而是执行缓存查找并显示一个列表,其中包含链接到搜索页面的页面。在这种情况下,页面名称被定义为包含":"字符的单词。
当您打开"搜索->搜索反向链接..."菜单项时,您会得到与搜索相同的搜索对话框,但当前页面的名称已经填入。
作为替代方案,您可以点击状态栏中的"反向链接"区域,这将弹出一个包含所有指向当前页面的反向链接的菜单。
命令行用法
您也可以使用命令行参数执行搜索,例如:
zim --search Notes "tag:home and tag:foo"
这将打印包含tags "@home
"和"@foo
"的所有页面的列表。
搜索查询语法
本节描述可在搜索对话框中使用的查询语法。
摘要
操作符:+ AND and &&
页面必须包含所有词语OR or ||
页面必须包含任一词语- NOT
页面不能包含此词
关键词: 下面有关键词搜索的详细信息
Content: #内容:
Name: #名称:
Section: #部分:
Links: #链接:
LinksFrom: #链接来源:
LinksTo: #链接目标:
Tag: #标签:
详情
布尔运算符AND NOT OR为您提供了极大的搜索灵活性。如果您有大型、长期的笔记本,学习这些操作符是值得的。
AND是默认操作符:它通过规定2个或更多术语出现在同一页面上,来缩小您的搜索范围。
和大多数搜索程序一样(如Google和Yahoo),默认情况下会隐含逻辑AND:如果您在搜索对话框中输入几个单词,zim会查找在页面名称或页面内容中包含所有这些单词的页面。对于多个单词,假定隐含AND运算符。如果您搜索同时包含单词foo和bar的页面,以下查询都是等效的:
foo bar
foo AND bar
foo and bar
foo && bar
+foo +bar
要从查询中排除包含特定单词的页面,请在单词前加上"-"或NOT运算符。它是AND的反义词。因此,要查找包含"foo"但不包含"bar"的页面,请尝试以下之一:
foo -bar
+foo -bar
foo NOT bar
foo AND NOT bar
对于既不包含"foo"也不包含"bar"的页面:
-foo - bar
NOT foo NOT bar
NOT foo AND NOT bar
OR在您不确定文本中出现了哪个确切单词时很有帮助。您可以输入可能出现在您正在寻找的页面上的具有相似含义的单词。
在我们的示例中,OR运算符用于查找包含"foo"或"bar"或两者的页面,因此要查找匹配"foo"或"bar"的任何页面,以下运算符会产生相同的结果:
foo OR bar
foo or bar
foo || bar
当组合运算符时,AND优先于OR。因此,像这样的查询:
foo OR bar AND dus
会返回包含"dus"以及"foo"或"bar"或两者的所有页面。
要匹配短语,即包含空格(空白)的字符串,或匹配看起来像运算符的内容,您需要将字符串放在双引号之间。因此,当寻找字面字符串"foo bar"和字面"+1"时,使用:
"foo bar" and "+1"
要匹配部分单词,可以使用"*
"作为通配符。因此,以下查询
Some*
将匹配所有以"Some"开头的单词,如"Someday"、"Someplace"等。
关键词搜索:
到目前为止,我们只是在页面内容和页面名称中搜索单词。如果您想要更多控制,可以使用关键词来指定特定的页面属性。这些搜索限制了搜索范围,它们不仅更具体,而且在某些情况下也比普通搜索快得多。页面定义字段的关键词是:
Content: #内容:
Name: #名称:
Section: #部分:
Links: #链接:
LinksFrom: #链接来源:
LinksTo: #链接目标:
Tag: #标签:
例如,要仅搜索页面名称,您可以使用:
Name: *foo*
此查询仅返回页面名称中包含"foo"的页面,而不查看其内容。
"Content:"关键词仅匹配页面内容,不包括页面名称等。
Content: foo AND NOT Name: *foo*
将查找在页面内容中某处含有foo但在页面名称中不包含"foo"的页面。
"Section:"关键词将搜索限制在特定页面名称的子页面。这允许搜索完整笔记本的子集。
假设在Home下,您有页面"photo"作为顶级页面,下面有多个页面,您只想搜索笔记本的photo部分。您想要查找有关景深或其缩写DoF的所有条目,因此您输入以下搜索:
Section: Home:photo "depth of field" or dof
"Links"和"LinksFrom"关键词返回特定页面链接的所有页面,而"LinksTo"返回链接到特定页面的所有页面,用于查找反向链接。
要排除所有链接到":Done"的页面,请尝试:
NOT LinksTo: ":Done"
一个复杂的例子是查找":Date"部分中链接到":Planning"的任何页面。
section: Date and linksto: Planning
关键词"Tag"可用于搜索特定标签,如:
Tag: home
请注意,对单个单词如"@home
"的简单搜索将自动转换为"Tag: home
"