搜索功能
使用 按钮打开搜索面板。在搜索输入框中输入内容,然后按 Enter(或点击搜索按钮)来执行搜索。
同一个输入框和选项驱动三种不同的操作——搜索、替换和放入——按危险程度从低到高排列,在下面依次说明。搜索只会查找内容,不会修改任何内容。替换和放入会写入翻译内容,所以使用之前请先阅读相关说明,以免丢失重要数据。
匹配选项
这些选项适用于所有三种操作:
| 选项 | 效果 |
|---|---|
| 区分大小写 | 区分大小写匹配。 |
| 全字匹配 | 仅匹配完整单词。 |
| 按正则表达式搜索 | 将输入视为正则表达式——请参阅下方的正则表达式。 |
| 搜索注释 | 同时搜索注释行,默认情况下会跳过注释行。 |
| 文件选择 | 将操作范围限定为特定文件,而非整个项目。 |
| 位置 | 搜索全部、仅源文本或仅译文。 |
| 列 | 所有列、最右侧列或其他翻译列。 |
搜索
搜索只会查找匹配项并列出结果——不会修改任何内容。结果会显示在 结果面板中,默认停靠在右侧(如果需要,可以将其拖出以浮动的形式显示)。
搜索经过了大量优化:匹配项以紧凑打包的内存索引形式存储,因此即使项目中有数百万个匹配项也能保持响应。
从结果面板中,每个匹配项的操作如下:
| 点击 | 操作 |
|---|---|
| 左键 | 跳转到翻译表中该匹配项的位置。 |
| 右键 | 用替换输入框中的文本仅替换该匹配项。 |
| 中键 | 将替换输入框中的文本放入该行的译文(参见放入。 |
替换
全局替换按钮会用替换输入框中的文本替换每个匹配项,覆盖搜索范围涉及的每个文件——而不仅仅是可见的结果。
在执行全局替换之前,请先运行搜索,浏览一下结果面板,确认它们确实是你想要修改的内容。整个项目替换中一个错误的匹配项溜过去,事后很难注意到。如果你想逐个操作,可以右键点击单个结果,而不是使用全局按钮。
放入
放入是需要小心使用的功能:它会用替换输入框中的文本覆盖每个源文本与搜索输入匹配的行的翻译单元格——即使该单元格已有译文。
放入始终匹配源文本,始终写入译文列,无视上方的位置选项。它还匹配整个源字符串,从头到尾,而不是仅匹配子字符串——因此搜索 Hello 只会命中恰好是 Hello 的源字符串,而不是 Hello, world!。要匹配带变量的结尾,请使用带贪婪量词的正则表达式,例如 Hello .+ 可以匹配 Hello World、Hello Rust、Hello Whatever 等。
与替换一样:请先搜索,检查结果面板,然后才使用全局放入按钮。中键单击单个结果可以仅放入该行。
正则表达式
该应用程序使用 Qt 的正则表达式实现,本质上是 PCRE2——完全支持 Unicode。
在替换/放入文本中,可以使用以下替换序列:
| 序列 | 插入的内容 |
|---|---|
\` |
完整匹配之前的文本。 |
\' |
完整匹配之后的文本。 |
\+ |
最后一个捕获组。 |
\{n} / \{nn} |
捕获组 n。\0 代表完整匹配。 |
\\ |
字面量 \。 |
如果你想用一个简单的方法完全回退基于正则表达式的替换,建议先在程序外部(文本编辑器、脚本)进行——程序不会为你跟踪替换/放入的历史。
搜索 \c 模式的示例:
