尋找與取代
在整個圖表中尋找文字,帶您前往 ERD 畫布上的每個相符項目,並取代其中一個或全部相符項目。
它會搜尋七種文字:資料表名稱、資料表註解、欄位名稱、欄位註解、備忘錄、索引名稱和資料表群組名稱,請參閱搜尋範圍。
它位於物件總管(停駐在 ERD 畫布左側的面板)頂端,介於物件總管的標題列和樹狀結構之間。它沒有自己的標題。由上而下依序為:
- 「尋找」輸入框,其內尾端有三個選項,前方則有
Toggle Replace箭頭。 Replace列,一開始為摺疊狀態,請參閱取代。- 計數,接著是逐一瀏覽相符項目的上下箭頭,以及三個點的
Search In按鈕。 - 由
Search In展開的文字種類。
「尋找」輸入框中有文字時,物件總管的樹狀結構會顯示相符項目,請參閱搜尋結果。
畫布較矮時,搜尋區仍會保持完整高度,其下方的樹狀結構則使用剩餘的空間並可捲動。

開啟與關閉
Ctrl + F (Windows/Linux) 或 ⌘ + F (Mac),以及快速搜尋或畫布右鍵選單中的 Toggle Explorer,都會開啟物件總管並進入其搜尋。插入點會移至「尋找」輸入框並選取其中的文字,接著以搜尋字串重新搜尋,此時沒有目前的相符項目。
工具列的 Explorer 按鈕只會開啟或關閉面板。它不會將插入點放入「尋找」輸入框,搜尋字串和目前的相符項目也會維持原狀。
當按鍵只是將插入點帶回已顯示的物件總管時(快速搜尋或物件總管旁的對話方塊中的五個對話方塊之一開啟期間就是如此),目前的相符項目會保持不變。
關閉物件總管、物件總管開啟時按鍵和兩個 Toggle Explorer 項目的作用,以及它們會關閉的對話方塊,請參閱物件總管頁面中的開啟與關閉。
暫時隱藏的情況說明其他索引標籤和禪模式如何將其隱藏,以及差異檢視器、時光旅行和自動版面配置預覽如何將其隱藏並使其無法開啟。位於畫布旁說明編輯器太窄而無法容納它的情況。
重新開啟時會保留上次的搜尋字串,以及取代文字、選項、已開啟的文字種類,還有 Replace 列和文字種類是否已展開。
這些內容會在編輯器保持開啟期間保留,但不會儲存到文件中。新開啟的編輯器一開始所有選項皆為關閉,Replace 列和文字種類皆為摺疊,且只開啟四種名稱,請參閱搜尋範圍。
瀏覽器的尋找列
編輯器擁有鍵盤焦點期間,Ctrl + F (Windows/Linux) 或 ⌘ + F (Mac) 在每個索引標籤上都由編輯器處理,在其自身的輸入框中也是如此,因此瀏覽器的尋找列不會開啟。
差異檢視器、時光旅行或自動版面配置預覽開啟期間,以及焦點位於編輯器之外時,此按鍵會傳給瀏覽器或主應用程式。
- 網頁應用程式和 Google Drive:瀏覽器的尋找列只會在這兩種情況下開啟。
- VS Code:擴充功能不會在 ERD Editor 中啟用 VS Code 本身的尋找小工具,因此在那裡按此按鍵絕不會開啟它。
- Obsidian:只要圖表的分頁處於作用中,此按鍵就會傳給編輯器,取代 Obsidian 的
Search current file。 - JetBrains IDE:如果 IDE 的按鍵對應將
Ctrl + F(Windows/Linux) 或⌘ + F(Mac) 保留給自己使用,則從快速搜尋或畫布右鍵選單中的Toggle Explorer開啟搜尋,或以工具列的Explorer按鈕開啟物件總管,再在「尋找」輸入框中按一下。
嵌入編輯器的網頁可以更換或移除此按鍵,請參閱變更快速鍵。
搜尋範圍
七個按鈕用來選擇要搜尋的文字種類,依序為:Table names、Table comments、Column names、Column comments、Memos、Index names 和 Table group names。
這些按鈕一開始為摺疊狀態。計數那一列尾端的 Search In 按鈕會將它們展開在該列下方,也會再次將其摺疊,且在它們顯示期間會醒目顯示。
醒目顯示的種類按鈕表示已開啟。按一下其中一個按鈕即可將其開啟或關閉,搜尋也會重新執行。七個全部關閉時,不會找到任何內容。
搜尋初次開啟時只會開啟四種名稱(Table names、Column names、Index names 和 Table group names),因此除非您開啟註解和備忘錄,否則重新命名不會觸及它們。
索引名稱是指資料表屬性的 Indexes 索引標籤中各索引的名稱,而不是列在它們上方的 PK_ 和 UQ_ 鍵。
其他內容都不會被搜尋:資料類型、預設值、索引的欄位、資料庫名稱、結構描述 SQL 及其 Before tables 和 After tables 指令碼,以及產生的程式碼都不在搜尋範圍內。
被資料表檢視選項隱藏的註解仍會被搜尋。以 View Option → Memos 隱藏的備忘錄,以及以 View Option → Table Groups 隱藏的資料表群組,即使其按鈕已開啟也不會被搜尋,因此 Replace All 絕不會改寫看不到的備忘錄,也不會重新命名看不到的群組。
選項
「尋找」輸入框內尾端的三個切換按鈕會改變搜尋字串的比對方式。它們的名稱顯示在工具提示中,開啟時會醒目顯示。三者一開始皆為關閉,變更其中任何一個都會重新搜尋。
Match Case:關閉時,比對不區分大小寫。Match Whole Word:只有任一側都未與單字相連的相符項目才算數。任何文字系統的字母、數字和附加符號都算是單字字元,底線也是。因此user會在user id和user.id中相符,但不會在users、user_id或superuser之中相符。搜尋字串中本身不是單字字元的一端(例如.id中的點),在該處不需要邊界。Use Regular Expression:搜尋字串為 JavaScript 規則運算式,且一律使用 Unicode 模式,因此可以使用\p{L}。^和$會在多行註解或備忘錄每一行的開頭和結尾相符,.則不會跨越換行。名稱中常輸入的跳脫字元(例如\_和\-)也可接受。
無法剖析的規則運算式(例如 user()不會找到任何內容:計數會以紅色顯示 Invalid regular expression,「尋找」輸入框也會以紅色外框標示。
Match Case 和 Match Whole Word 也適用於規則運算式。長度為零的相符項目(例如單獨的 ^)絕不會列出。
純文字會在輸入時即時搜尋。規則運算式會在輸入暫停後搜尋,或在按 Enter、瀏覽按鈕、Replace 或 Replace All,或選擇含有相符項目的列時立即搜尋。
搜尋沒有時間限制,因此大量回溯的規則運算式可能會讓編輯器在搜尋完成前沒有回應。
第四個切換按鈕 Preserve Case 位於 Replace 輸入框內的尾端,因此只有在 Replace 列展開時才會顯示。它一開始為關閉。它不會改變找到的內容,只會改變 Replace 和 Replace All 寫入取代內容的方式,請參閱取代。開啟或關閉它不會執行搜尋,目前的相符項目也會保持不變。
搜尋結果
計數位於輸入框下方那一列的開頭,顯示目前所在的位置。「尋找」輸入框為空時,計數也是空的。
| 計數 | 時機 |
|---|---|
No results | 沒有任何相符項目。 |
12 matches | 尚未移至其中任何一個時;只有一個時為 1 match。 |
3 of 12 | 第三個相符項目為目前的相符項目。 |
Invalid regular expression | 規則運算式無法剖析。 |
Replaced 12 matches | Replace All 變更了這麼多個相符項目;只有一個時為 Replaced 1 match。 |
No changes | Replace All 沒有變更任何內容。 |
No more matches | 一輪 Replace 已回到其起點,請參閱取代。 |
Replaced …、No changes 和 No more matches 會在下一次搜尋或移動時改回顯示計數,包括編輯或復原所觸發的搜尋。
「尋找」輸入框中有文字時,物件總管的樹狀結構會顯示搜尋結果,而不是整個圖表:只顯示含有相符項目的列及其上層的列。沒有任何相符項目,或規則運算式無法剖析時,樹狀結構會是空的。刪除搜尋字串即可恢復整個樹狀結構,並維持先前的摺疊狀態。
Tables、Table Groups和Memos只有在含有相符項目時才會顯示,每個資料夾的計數是搜尋結果中直接位於其下的列數。Tables下方依名稱列出含有相符項目的資料表。每個資料表下方先是其註解中每個相符項目各一列,接著是Columns資料夾,依欄位順序列出含有相符項目的欄位,每個欄位下方有其註解中每個相符項目各一列,然後是Indexes資料夾,列出名稱相符的索引。沒有Foreign Keys資料夾。Table Groups下方依名稱列出名稱相符的群組,但不包含其中的資料表。找到的資料表會顯示在Tables下方。Memos下方依文件順序列出含有相符項目的備忘錄,每個備忘錄以其第一行顯示,其中每個相符項目各有一列。
名稱中的相符項目會在該名稱本身的列中醒目顯示,因此包含兩次搜尋字串的名稱會是一列,其中有兩處醒目顯示。
註解或備忘錄中的相符項目則有自己的一列:資料表或欄位註解為對話泡泡圖示,備忘錄為便利貼圖示,後面接著醒目顯示相符項目的文字摘錄。較長的文字會以 … 截斷,換行則顯示為空格。將指標停留在該列上即可查看完整文字。
其他所有列的外觀都與搜尋之外相同:欄位會顯示其資料類型,索引會顯示其欄位,空白的名稱則顯示為 unnamed。
搜尋開始時,每個下層有其他列的列都會展開顯示。手動摺疊的列,或 Collapse All 摺疊的列,會保持摺疊,直到其下的某個相符項目成為目前的相符項目,或搜尋字串、Match Case、Match Whole Word、Use Regular Expression 或文字種類變更,或以按鍵或 Toggle Explorer 項目再次開啟搜尋為止。
目前相符項目的列會醒目顯示,並捲動到可見範圍內。無論相符項目有多少,樹狀結構都會全部列出。
相符項目會依樹狀結構的順序逐一瀏覽:逐個資料表依序為資料表名稱、其註解、依欄位順序排列的各欄位名稱和註解,以及其索引名稱;接著是資料表群組名稱;最後是備忘錄。
物件總管顯示期間,搜尋結果會跟隨文件更新。編輯暫停後,被搜尋文字的任何變更都會觸發重新搜尋,且目前的相符項目若仍存在,就會保持為目前的相符項目。這包括編輯名稱、註解或備忘錄文字,新增或移除資料表、欄位、索引、備忘錄或資料表群組,移動欄位,以及以檢視選項隱藏或顯示備忘錄或資料表群組(這會將其相符項目從樹狀結構中移除或恢復)。在畫布上的編輯、復原或重做、匯入,以及協作者或程式碼代理程式的編輯都算在內。選取、在畫布上移動資料表、備忘錄或群組、捲動、縮放,以及將指標停留在項目上則不算。
在物件總管關閉或不可見期間所做的編輯,會在物件總管再次顯示時立即搜尋。
前往相符項目
在「尋找」輸入框中按 Enter 會前往下一個相符項目,按 Shift + Enter 則前往上一個。計數後方的上下箭頭按鈕作用相同;其工具提示分別為 Previous Match (Shift+Enter) 和 Next Match (Enter),沒有相符項目時會停用。
移動在兩端都會循環。在第一次移動之前沒有目前的相符項目,因此第一次按 Enter 會前往第一個相符項目,第一次按 Shift + Enter 則前往最後一個。
在搜尋結果的某一列上按一下,或在鍵盤焦點位於該列時按 Enter 或 Space,會執行下列其中一項:
- 本身名稱含有相符項目的列,會前往該名稱中的第一個相符項目。
- 顯示註解或備忘錄摘錄的列,會前往該相符項目。
- 其他任何列(例如名稱不相符的資料表,或備忘錄本身的列)會前往該列所代表的項目,並讓目前的相符項目維持原狀,請參閱前往某一列。
- 資料夾會摺疊或展開。
每當某個相符項目成為目前的相符項目時,樹狀結構會展開其上方任何已摺疊的列,並將鍵盤焦點移到該列,因此在樹狀結構中按方向鍵會從該處繼續。
前往相符項目時,若「資料表屬性」已開啟會先將其關閉,接著:
- 對於資料表名稱或註解,或欄位名稱或註解,會單獨選取該資料表、將其移到最前面,並將焦點儲存格放在含有相符項目的儲存格上。若相符項目位於被資料表檢視選項隱藏的註解中,焦點儲存格則會改放在其旁邊的名稱上。
- 對於索引名稱,會單獨選取該索引所屬的資料表並將其移到最前面,除非焦點儲存格已在該資料表中,否則會將焦點儲存格放在資料表名稱上。索引名稱不會繪製在畫布上。
- 對於資料表群組名稱,會單獨選取該群組,並將其連同其中的資料表移到最前面。
- 對於備忘錄,會單獨選取該備忘錄並將其移到最前面。
只有在前往的目標尚未清楚顯示時,畫布才會捲動,且縮放比例絕不會改變,請參閱跳至目標時的落點。
在「尋找」輸入框中按 Enter 後,插入點會留在該處;選擇一列後,鍵盤焦點會留在樹狀結構中,因此接下來輸入的內容不會傳到所選的資料表。
前往相符項目絕不會開始或完成正在繪製的關聯。
取代
Replace 列一開始為摺疊狀態。「尋找」輸入框前方的箭頭(其工具提示為 Toggle Replace)可將其展開和摺疊。摺疊時會保留取代文字。
該列包含 Replace 輸入框(其內尾端有 Preserve Case 切換按鈕),以及兩個按鈕,其工具提示分別為 Replace (Enter) 和 Replace All。沒有相符項目時,兩個按鈕都會停用。
在「取代」輸入框中按 Enter(無論是否按住 Shift),或按一下其按鈕,即可執行 Replace:
- 沒有目前的相符項目時,第一次按下只會前往下一個相符項目,讓您在任何內容變更之前先看到它將變更的內容。
- 有目前的相符項目時,只會取代該處,保留同一段文字中的其他出現處,並繼續前往所寫入文字之後的下一個相符項目。即使寫入的文字包含搜尋字串也會被略過:將
user取代為super_user後,不會接著停在super_user之中。 - 若取代內容會將相符項目寫回與原本完全相同的內容,該相符項目會維持原狀,此次按下只會前往下一個相符項目。
- 取代與捲動到下一個相符項目算作一個復原步驟。
連續按下 Replace 的一輪操作會在繞回起點時停止。計數會顯示 No more matches,沒有目前的相符項目,之後再按也不會取代任何內容。
因此將 Customer 取代為 Big Customer 時只會取代一次,而不會一再增長為 Big Big Customer。
前往相符項目,變更搜尋字串、Match Case、Match Whole Word、Use Regular Expression 或文字種類,以按鍵或 Toggle Explorer 項目開啟搜尋,或執行 Replace All,都會開始新的一輪;復原或任何其他變更該輪起點所在文字的編輯也是如此。變更取代文字或 Preserve Case 則不會,按鍵只是將插入點帶回已顯示的物件總管時也不會。
在一輪進行期間,被重新命名的資料表或資料表群組會保留其在樹狀結構和相符項目順序中的位置,因此即使重新命名後應排在較後面,也不會再次遇到它。下一輪會將樹狀結構恢復為依名稱排序,重新命名的列也會移到新的位置。
在「取代」輸入框中按 Ctrl + Enter (Windows/Linux) 或 ⌘ + Enter (Mac),或按一下其按鈕,即可執行 Replace All:
- 它會取代已開啟的文字種類中的所有相符項目,其他種類則不受影響。使用預設的種類時,它會重新命名資料表、欄位、索引和資料表群組,註解和備忘錄則不會被更動。
- 它所做的所有變更算作一個復原步驟,請參閱一次操作,一個步驟。
- 計數會顯示
Replaced N matches,只計算文字實際有變更的出現處。若都沒有變更,則會顯示No changes,且歷程記錄中不會記錄任何內容,例如將規則運算式(user)取代為$1時。 - 接著會在沒有目前相符項目的狀態下重新搜尋結果,因此結果中可能會列出新文字所包含的相符項目。
兩者都會讀取按下當下的各段文字,而不是上次搜尋找到時的狀態。
取代文字的使用方式:
- 未使用
Use Regular Expression時,$沒有特殊意義,取代文字會依輸入的內容使用,只有Preserve Case所套用的大小寫除外。 - 使用
Use Regular Expression時,$1到$99、$<name>、$&、$`、$'和$$會像在 JavaScript 的String.prototype.replace中一樣展開。 - 未使用
Preserve Case時,不會沿用相符文字的大小寫:在Match Case關閉時,將user取代為member會把Users變成members。 - 使用
Preserve Case時,每個取代內容會在$1等展開之後,依照其所取代的文字套用大小寫,因此同樣的取代會把Users變成Members:- 全部大寫的相符項目會得到全部大寫的取代內容,全部小寫的相符項目則會得到全部小寫的取代內容:
USER搭配account會得到ACCOUNT,user搭配Account會得到account。 - 其他任何相符項目會讓取代內容的第一個字元採用相符項目第一個字元的大小寫,其餘部分則維持輸入的樣子:
UserId搭配accountKey會得到AccountKey,uSER搭配AccountKey會得到accountKey。相符項目的第一個字元沒有大小寫之分時,取代內容會維持輸入的樣子:_Ab搭配xyz會得到xyz。 - 當相符項目和取代內容都包含
-,或都包含_,且該分隔符號將兩者分成相同數量的片段時,每個片段會依照對應的片段套用大小寫:USER_id搭配account_key會得到ACCOUNT_key,User-Name搭配account-key會得到Account-Key。當-和_都能如此分割兩者時,則將整體視為一個片段套用大小寫。 - 相符項目中沒有任何具大小寫之分的字母時(例如
123),取代內容會維持輸入的樣子。 - 寫回原樣的相符項目不會被計算:在
Match Case關閉時,將customer取代為Customer會把customer、Customer和CUSTOMER原樣寫回,且都不會被計算。
- 全部大寫的相符項目會得到全部大寫的取代內容,全部小寫的相符項目則會得到全部小寫的取代內容:
- 「取代」輸入框為空時會刪除相符項目。
取代是一般的編輯,等同於自行輸入新的資料表名稱、註解、欄位名稱或備忘錄文字,在「資料表屬性」中重新命名索引,或重新命名資料表群組。
它會和其他任何編輯一樣記錄在歷程記錄中,並傳達給協作者和程式碼代理程式。
搜尋輸入框中的按鍵
- 在「尋找」輸入框中,
Enter會前往下一個相符項目,Shift + Enter則前往上一個。 - 在「取代」輸入框中,
Enter會執行取代(無論是否按住Shift),Ctrl + Enter(Windows/Linux) 或⌘ + Enter(Mac) 則會全部取代。 - 輸入法在任一輸入框中組字期間,
Enter會交由組字處理,既不會移動也不會取代。
Escape、仍可使用的編輯器快速鍵,以及其他所有按鍵在這些輸入框中的作用,請參閱物件總管中的按鍵。
唯讀編輯器
在 readonly 編輯器中,搜尋只能尋找。沒有 Toggle Replace 箭頭,也沒有 Replace 列,因此也沒有「取代」輸入框、Preserve Case、Replace 或 Replace All。
「尋找」輸入框、其三個選項、文字種類、計數、搜尋結果,以及前往相符項目都能正常使用。其周圍的物件總管則與在其他任何編輯器中的運作方式相同,請參閱唯讀編輯器。
在 VS Code 中,圖表的修訂版本(例如 Git 修訂版本或 Local History 項目)會以 JSON 文字開啟。以 Reopen Editor With... 重新以圖表開啟時,它會是唯讀的,並提供這種僅能尋找的搜尋。
變更快速鍵
嵌入編輯器的網頁可以使用 setKeyBindingMap,以 findReplace 這個名稱重新繫結或移除 Ctrl + F (Windows/Linux) 或 ⌘ + F (Mac)。
移除後,在每個索引標籤上此按鍵都會交由網頁處理。工具列的 Explorer 按鈕仍會開啟和關閉物件總管,快速搜尋和畫布右鍵選單中的 Toggle Explorer 也仍會開啟搜尋或關閉物件總管,但它們都不會顯示快速鍵,因此按鈕的工具提示只會顯示 Explorer。「設定」中「快速鍵」索引標籤上的 Toggle Explorer 列也不會顯示按鍵。重新繫結後,它們都會顯示新的按鍵。