跳到主要内容

快速搜索

快速搜索是编辑器的命令面板。
它会列出当前标签页可用的命令。在搜索开头输入 #、@ 或 :,则会改为搜索图,并跳转到表、列,或者注释或备注。

通过 Ctrl + K (Windows/Linux) 或 ⌘ + K (Mac) 打开,也可以点击工具栏的 Search。
再次按下同一快捷键即可关闭,按 Esc 或点击面板外部也可关闭。打开时会关闭表属性、主题构建器、Display Language 选择器、Export image 对话框以及映射列,在映射列中已做的选择会被丢弃。在编辑表的单元格、备注、表分组的名称或 Dictionary 标签页上的单元格时则无法打开。

工具栏中紧跟在 Search 之后的按钮是 Explorer。它会打开或关闭资源管理器,这是一个停靠在画布左侧、以树形展示整张图的面板,顶部是查找与替换。
打开命令面板时,资源管理器会保持打开,此时按 Esc 只会关闭命令面板。在命令面板中按 Ctrl + F (Windows/Linux) 或 ⌘ + F (Mac) 会关闭命令面板,并把键盘焦点移到资源管理器的查找输入框;资源管理器未显示时,会将其打开并定位到其搜索。与 Toggle Explorer 条目不同,在命令面板中按该键永远不会关闭资源管理器,参见打开与关闭。Diff Viewer、Time Travel 或自动布局预览打开期间,编辑器不处理该按键:命令面板保持打开,按键会传给浏览器或宿主,参见浏览器的查找栏。
嵌入编辑器的宿主可以将快速搜索绑定到其他按键,此时 Search 的提示会显示该按键,参见快捷键。

用 ⌘ + K 打开命令面板,再用 #pay 跳转到表,用 @price 跳转到列,用  跳转到表注释

搜索与导航​

输入文字即可过滤列表。每次按键都会对当前显示的整个列表重新搜索,因此删除字符,或者用新词替换没有找到任何结果的词,都会让匹配的条目重新出现。
匹配为模糊匹配,涵盖条目名称及其旁边显示的关键字。例如在 Import 子菜单中,sdl 可以找到 GraphQL,dbdiagram 可以找到 DBML,azimutt 可以找到 AML。轻微的拼写错误仍能找到对应的条目,例如 tabel 可以找到 New Table,imprt 可以找到 Import;但与输入内容只是大致相似的条目会被排除:memo 只会列出 New Memo。名称或关键字中包含输入内容(不区分大小写)的条目总会被列出,模糊匹配漏掉的这类条目排在模糊匹配的结果之后。条目中凡是包含输入内容的地方都会高亮显示,不区分大小写。
当显示语言不是英语时,命令和子菜单条目也可以通过其英文名称和关键字找到,列表中不会显示这些英文名称和关键字,因此无论 New Table 以哪种语言显示,new table 都能找到它。
使用 ↑ 和 ↓ 在列表中移动,到达两端时会循环,按 Enter 执行高亮的条目。列表会滚动以让高亮的条目保持在视野内;在较矮的编辑器窗格中,它会缩小到搜索框下方的剩余空间,因此每个条目仍然可以到达,高亮的条目也保持在视野内。带有独立快捷键的命令会在其所在行的末端显示该快捷键:位于右侧;在从右到左书写的显示语言中则位于左侧。输入法仍在组字时(例如正在输入一个韩文音节),↑、↓ 和 Enter 归输入法处理,既不会移动高亮,也不会执行条目。

Database、Import 或 Auto Layout 之类的条目会打开子菜单,其条目会替换当前列表,搜索框也会被清空。Name View、Database、Bracket、Language、两种名称大小写、Schema SQL: Statements、Schema SQL: Header、Theme 和 Display Language 的子菜单会勾选当前的选择,并在打开时将高亮置于该项上,因此直接按 Enter 会保留当前选择;其他子菜单打开时没有任何条目处于高亮状态。
过滤始终只作用于当前显示的列表,并且无法返回上一级,因此需要关闭并重新打开命令面板才能重新开始。在子菜单中,#、@、: 和 ? 只是普通文本,而不是前缀。

命令面板列出的内容​

列表内容取决于当前所在的标签页。每个标签页的列表都以 Tab 开头,用于切换到 Entity Relationship Diagram、Visualization、Schema SQL、Code Generator、Dictionary 或 Settings,当前所在的标签页不会出现在其中。

在 ERD 标签页中,列表先是 Name View 和最多四个用于重新生成物理名的行,然后依次是 Database、Import、Import and Add 与 Export,接着是 New Table、New Memo、New Table Group 与 Group Selected Tables,以及四种关系类型和 Auto Layout。这里不会列出表,输入 # 即可跳转到表。
Name View 会打开 Physical Names、Logical Names 和 Both Names,并勾选当前的显示方式,选择其中一项会像画布右键菜单中的 Name View 一样切换显示方式,参见切换显示方式。它只在 ERD 标签页的列表中出现,在只读编辑器中也是如此。
这些重新生成的行通过其旁边的关键字区分。Derive Physical Name Again 旁边显示 column,用于重新生成焦点所在列的物理名。Derive Physical Names Again 有三行:旁边显示 table 的一行作用于焦点所在的表,包括其名称和每一列;旁边显示 selected tables 的一行在选中两个或更多表时作用于选中的表;旁边显示 whole document 的一行作用于图中的每个表。每一行只在有可作用的对象时才会列出,在只读编辑器中则都不会列出。
当 View Option → Memos 隐藏了备注时,不会列出 New Memo。New Table Group 会开始在画布上绘制一个表分组,Group Selected Tables 会把选中的表放入一个新分组,并打开该分组的名称编辑器以便输入名称。当 View Option → Table Groups 隐藏了表分组时,这两项都不会列出;此外,Group Selected Tables 还要求至少选中一个表。这两行会显示各自的按键:绘制分组为 Alt + G (Windows/Linux) 或 ⌥ + G (Mac),为选中的表分组为先按 T 再按 G。
这些条目执行的命令与画布右键菜单相同,但以下条目执行的是表的右键菜单中的命令:Group Selected Tables 执行其中的 Group selected tables,旁边显示 column、table 和 selected tables 的重新生成行执行其中的 Derive Physical Name Again 或 Derive Physical Names Again,作用于焦点或选中范围,而不是右键点击的位置。View Option 和 Diff Viewer 仅存在于右键菜单中。此处的 Export 提供与右键菜单相同的 json、Schema SQL 和 Image,在其中输入 png 或 svg 即可找到 Image。
各格式、Import and Add 以及图片导出的作用参见导入与导出文件,数据库选择的影响参见表相关功能。

在 Schema SQL 标签页中,列表同样包含 Database,以及 Bracket。Bracket 用于设置生成的 SQL 中包裹表名、列名、约束名和索引名的引号字符,可选 SingleQuote、DoubleQuote、Backtick,或选择 None 表示不加任何引号。接着是 Schema SQL: Statements 和 Schema SQL: Header,它们提供与该标签页选项面板相同的选择,但只列出所选数据库会写出的选项;然后是 Schema SQL: Options panel,用于显示或隐藏该面板。各选项会写出什么参见 Schema SQL。

在 Code Generator 标签页中,列表包含 Database,语言为 Doctrine、JPA 或 SeaORM 时还包含 Bracket,然后是 Language、Table Name Case、Column Name Case 以及 Code Generator: Options panel,后者用于显示或隐藏该标签页的选项面板。各目标生成的内容参见代码生成。

Visualization、Dictionary 和 Settings 标签页没有自己专属的命令,只有 Tab 以及下文所述每个标签页都会列出的命令。

每个标签页的列表末尾附近都有 Toggle Explorer,在只读编辑器中也是如此,它会显示自己的快捷键 Ctrl + F (Windows/Linux) 或 ⌘ + F (Mac)。输入 find、replace、rename、tree、outline 或 objects 也可以找到它。
执行该条目会关闭命令面板,效果与在画布上按该快捷键相同。当工具栏的 Explorer 按钮显示为按下状态时,也就是资源管理器在 ERD 标签页中处于打开状态且未被禅模式隐藏时,它会关闭资源管理器;否则,它会切换到 ERD 标签页,打开资源管理器并定位到其搜索,光标位于查找输入框中,参见打开与关闭。Diff Viewer、Time Travel 或自动布局预览打开期间,列表中不会出现该条目。

主题与显示语言​

每个标签页都会在 Toggle Explorer 之后列出 Theme 和 Display Language,在只读编辑器中也是如此。两者都只在编辑器提供相应选择器时才会列出,这一点可以从工具栏的 Theme 和 Display Language 按钮看出。Web 应用、Google Drive、VS Code、JetBrains IDE 和 Obsidian 都提供这两者,参见在各宿主中。

Theme 会打开 System、Light 和 Dark,当前的外观处于勾选状态。选择其中一项只会改变外观,灰阶色和强调色保持不变,与主题构建器的 Appearance 按钮相同。
Display Language 会打开 System,其后是 25 种语言,每种语言都以其自身的名称显示,并按选择器中的顺序排列,当前选项处于勾选状态。在这里还可以通过语言的英文名称或代码找到它:german 或 de-DE 可以找到 Deutsch,korean 可以找到 한국어。
在这两者中所做的选择都会立即生效并关闭命令面板,并且与在主题构建器或 Display Language 选择器中所做的选择一样被保存下来。如果在命令面板打开期间显示语言发生了变化,列表会切换为该语言,同时保留已输入的内容和当前所在的子菜单。

只读编辑器​

readonly 编辑器不会列出任何会改变图的命令,而不是把它们列为变暗的状态。
在 ERD 标签页上,它保留 Tab、Name View、Database、带有全部三个条目的 Export、Toggle Explorer、Theme 和 Display Language。它不列出 Import、Import and Add、重新生成的各行、New Table、New Memo、New Table Group、Group Selected Tables、四种关系类型和 Auto Layout。
其他标签页列出的内容与在任何编辑器中相同。无论列在哪里,Tab、Name View、Database、Bracket、Language 和两种名称大小写都只改变该屏幕,从不保存,参见设置中的只读编辑器。
如果在命令面板打开期间编辑器变为只读,或者再次变为可写,列表会按编辑器此时所提供的内容重新绘制,并按你已输入的内容重新搜索。其行已消失的子菜单会让位给顶层。

#、@ 和 : 前缀与在任何编辑器中一样搜索图,跳转会选中其所到达的对象,参见搜索图。在只读编辑器中,这是选中任何内容的唯一方式:在画布上按下不会选中任何内容,而不移动的点击会清除跳转所选中的内容,参见只读编辑器。

搜索图​

在搜索开头输入前缀,即可搜索图而不是命令:# 搜索表,@ 搜索列,: 搜索注释和备注,? 列出所有前缀。前缀在任意标签页中都有效。只有作为第一个字符时它才算作前缀,其前面的空格会被忽略。前缀后面的空格可有可无,因此 #users 和 # users 是同一个搜索,日文或中文输入法输入的全角 #、@、: 和 ? 同样有效。
在顶层且输入框为空时,输入框下方会有一行显示这四个前缀,点击其中一个即可输入它。前缀生效期间,输入框的末端会显示其搜索范围:Tables、Columns、Comments & memos 或 Help。删除前缀即可回到命令列表。

# 列出所有表,每个表旁边显示 Table。每一行按名称显示的方式命名其表,例如在 Both Names 中显示为 Accounts (users),没有可显示名称的表会显示为 unnamed。# 后面没有内容时,在每种显示方式下表都按名称排序,永远不会按逻辑名排序。# 后面的文本会与每个表的名称及其逻辑名进行模糊匹配(与上文相同),无论当前显示的是什么,因此即使在 Physical Names 中,#accounts 也会列出 users。名称或逻辑名中包含该文本的表排在前面。任何前缀都不会搜索表分组的名称和索引的名称;查找与替换则两者都会搜索。

@ 列出列,每一列旁边显示它所在的位置,例如 users.email · Column。@ 后面的文本必须出现在列的名称或其逻辑名中,不区分大小写,也与名称显示所显示的内容无关;这种匹配不是模糊匹配。包含该文本的每个名称各占一行:逻辑名匹配的行显示逻辑名,旁边显示 users.email · Logical name,因此名称和逻辑名都包含该文本的列会被列出两次。第一个 . 之前的文本会把搜索范围缩小到名称或逻辑名中包含该文本的表:@users.em 会在名称或逻辑名包含 users 的表中列出包含 em 的列,@users. 会列出这些表的列,@.em 则搜索所有表。表自身的逻辑名在 @ 下不会生成任何行;# 可以找到它。@ 后面没有内容时,每一列按其名称列出一次。

: 列出表注释、列注释和备注,从不列出名称或逻辑名。每一行显示匹配处前后的文本摘录,旁边显示 users · Table comment、users.email · Column comment 或 Memo。: 后面的文本必须出现在注释或备注中,与 @ 一样不区分大小写。: 后面没有内容时,会列出所有非空的注释和备注。当 View Option → Memos 隐藏了备注时,: 不会列出任何备注。

@ 和 : 按文档中保存的顺序列出各行:逐个表列出,每个表的注释排在其各列之前,各列按列的顺序排列,备注排在最后。在 @ 下,列的逻辑名行排在其名称行之前。
无论哪种显示方式,@ 或 : 行旁边显示的位置都给出表和列的名称,永远不会给出其逻辑名。

? 列出 Tables、Columns 和 Comments & memos,? 后面的文本会对它们进行过滤。选择其中一项会把输入内容替换为对应的前缀,并保持命令面板打开。

带前缀的列表包含所有匹配项,不论数量多少。带前缀的搜索没有找到任何结果时,列表为空,也不会显示任何提示信息。

选择表、列、注释或备注会关闭命令面板,如果当前位于其他标签页,还会切换到 ERD 标签页。
除非该对象已经显示得足够清楚,否则画布会滚动到它,参见跳转的落点。随后,表会被单独选中并移到最前面。除非焦点原本就在该表中,否则其表头的第一个单元格会获得焦点:即其名称,在 Logical Names 和 Both Names 中则为其逻辑名。
备注会被单独选中并移到最前面。对于列或注释,其所在的表会被单独选中并移到最前面,焦点落在包含该文本的单元格上。如果当前显示方式不绘制该单元格,焦点会落在在其位置绘制的单元格上:在 Physical Names 中找到的逻辑名会落在名称上,在 Logical Names 中找到的名称会落在逻辑名上。被表显示选项隐藏的注释会落在其旁边的名称上,在 Logical Names 中则落在逻辑名上。
任何跳转都不会开始或完成正在绘制的关系。

如需使用 Match Case、Match Whole Word 或 Use Regular Expression,或者要替换文本,请使用资源管理器顶部的查找与替换。

没有匹配的命令时​

在顶层且没有前缀时,如果列出的命令中没有任何一个包含输入的内容(不区分大小写),命令之后会出现三行:Search tables for "…"、Search columns for "…" 和 Search comments & memos for "…",每一行都以对应的前缀作为图标。选择其中一行会在输入内容前加上该前缀,例如 users 会变为 #users,命令面板则保持打开并显示相应的结果。
如果搜索没有找到任何命令,列表上方会显示 No commands match,此时列表中只有这三行。如果只找到了不包含该文本的命令,这些命令会排在前面:在 ERD 标签页中没有选中任何表时,tables 会在这三行之前列出 New Table、Database,以及在提供该条目时列出的 New Table Group。选中了表时,如果提供了 Group Selected Tables,它包含 tables,因此这三行不会出现。
在子菜单中,没有找到结果的搜索会让列表为空,也不会显示任何提示信息。

使用韩文搜索​

包含韩文的搜索还会按字母进行匹配,在命令、子菜单以及所有前缀下均是如此。
韩文输入法组字过程中的每一步都能持续找到你要输入的那一行,因此 ㅅ、사、상、사요 和 사용 都能找到 사용자。只由初声辅音组成的搜索会与各音节的初声匹配,并跳过空格:ㅅㅇㅈ 可以找到 사용자,ㅈㅁ 可以找到 주문 내역。Windows 输入法将连续输入的两个初声组合而成的复合辅音(例如 ㅄ)会按两个字母(ㅂㅅ)计算,而 ㄲ 之类的双辅音仍算作一个字母。以分解形式保存的文本(例如 macOS 的文件名)会按组合后的形式进行匹配。
整段文本逐字母或逐初声完整拼出搜索内容的行排在最前,其次是以搜索内容开头的行,然后是包含它的行。在 @ 和 : 下,按原样包含搜索内容的行排在所有这些行之前,并按文档顺序排列。高亮覆盖整个音节,因此 상 会高亮 사용자 中的 사용。