본문으로 건너뛰기

찾기와 바꾸기

다이어그램 전체에서 텍스트를 찾아 ERD 캔버스의 각 일치 항목으로 이동하며, 일치 항목을 하나만 또는 모두 바꿉니다.
테이블 이름, 테이블 코멘트, 컬럼 이름, 컬럼 코멘트, 메모 텍스트의 다섯 가지 텍스트를 검색합니다. 검색 대상 항목을 참고하세요.

패널은 툴바 아래 ERD 캔버스의 왼쪽 위 모서리에 떠 있으며, Zen 모드에서는 캔버스 맨 위에 표시됩니다. 헤더에는 Find and Replace가 표시되며, readonly 에디터에서는 Find가 표시됩니다. 읽기 전용 에디터 항목을 참고하세요.
캔버스의 높이가 낮으면 결과 목록의 높이가 먼저 줄어들므로, 입력란, 옵션, 개수 표시는 잘리지 않고 그대로 보입니다.

⌘ + F로 찾기와 바꾸기를 열고 Enter와 Next 버튼으로 member의 일치 항목 네 개를 차례로 이동한 뒤, Replace All(⌘ + Enter)로 네 곳의 member를 모두 user로 바꾸는 모습

열기와 닫기​

단축키 Ctrl + F (Windows/Linux) or ⌘ + F (Mac)로 열거나, 다음 중 하나로 엽니다.

  • 툴바에서 Search 바로 다음에 있는 텍스트 검색 아이콘 버튼. 툴팁에 Find and Replace (Ctrl + F) (Windows/Linux) or Find and Replace (⌘ + F) (Mac)가 표시됩니다.
  • 빠른 검색의 Find and Replace. 모든 탭의 목록에 표시되며, find, replace, rename을 입력해도 찾을 수 있습니다.
  • 캔버스 컨텍스트 메뉴의 Find and Replace. ERD 캔버스의 빈 곳을 마우스 오른쪽 클릭하면 나타나는 메뉴에서 New Table과 New Memo 다음, Relationship 앞에 있습니다.

빠른 검색과 컨텍스트 메뉴의 항목은 오른쪽에 단축키를 표시합니다.

단축키와 툴바 버튼은 모든 탭에서 동작합니다. Visualization, Schema SQL, Code Generator, 설정 탭에서 열면 먼저 ERD 탭으로 전환되는데, 일치 항목을 표시하고 편집하는 곳이 ERD 탭이기 때문입니다.
빠른 검색이 열려 있을 때 단축키를 누르면 팔레트가 닫히고 패널이 열립니다. 테이블 셀이나 메모를 편집하는 중에는 아무 동작도 하지 않습니다.
패널을 열면 테이블 속성 패널과 테마 빌더가 닫힙니다.

패널이 표시되어 있는 동안에는 단축키, 툴바 버튼, 두 항목으로 패널이 닫히지 않습니다. 대신 Find 입력란의 텍스트를 선택한 채로 커서를 그 입력란으로 되돌리며, 현재 일치 항목은 그대로 유지됩니다.

테이블 속성이나 테마 빌더를 열면 열려 있는 패널이 닫히지 않고 숨겨지며, 다른 탭으로 전환할 때도 마찬가지입니다. 대화 상자가 닫히거나 ERD 탭으로 돌아오면 패널이 떠나기 전 상태 그대로 다시 나타납니다.
단축키, 툴바 버튼, 두 항목으로도 숨겨진 패널을 다시 표시할 수 있지만, 이때는 검색어를 다시 검색하며 현재 일치 항목이 없는 상태가 됩니다.
Diff Viewer, Time Travel, 자동 배치 미리보기가 열려 있는 동안에는 패널을 열 수 없습니다. 툴바 버튼은 흐리게 표시되고 아무 동작도 하지 않으며, 빠른 검색에는 Find and Replace가 표시되지 않고, 단축키는 브라우저나 호스트로 넘어갑니다. 브라우저의 찾기 막대 항목을 참고하세요. 이미 열려 있던 패널은 그것들이 닫힐 때까지 숨겨집니다.

Escape나 헤더의 x 버튼으로 닫으며, 이 버튼의 툴팁에는 Close (ESC)가 표시됩니다. 패널을 닫으면 키보드 포커스가 에디터로 돌아갑니다.

  • 패널에서 누른 Escape는 패널을 닫고 선택은 그대로 두므로, 마지막으로 이동한 일치 항목의 테이블이나 메모가 선택된 채로 남습니다.
  • 캔버스에서 누른 Escape도 패널을 닫으며, 패널이 열려 있지 않을 때와 마찬가지로 같은 입력으로 선택과 포커스된 셀도 해제합니다. 단축키 문서를 참고하세요.
  • 셀이나 메모가 편집모드로 열려 있거나, 관계를 그리는 중이거나, 빠른 검색이 열려 있으면 그쪽이 먼저 이 입력을 받으며 패널은 열린 채로 남습니다.

다시 열면 마지막 검색어가 선택된 상태로 남아 다시 검색되며, Replace 텍스트, 옵션, 켜져 있던 텍스트 종류도 유지됩니다.
이 값들은 에디터가 열려 있는 동안 유지되며 문서에 저장되지 않습니다. 새로 불러온 에디터는 모든 옵션이 꺼지고 Table names와 Column names만 켜진 상태로 시작합니다.

브라우저의 찾기 막대​

에디터에 키보드 포커스가 있는 동안에는 모든 탭에서, 에디터 자체의 텍스트 입력란에서도 Ctrl + F (Windows/Linux) or ⌘ + F (Mac)를 에디터가 처리하므로 브라우저의 찾기 막대가 열리지 않습니다.
Diff Viewer, Time Travel, 자동 배치 미리보기가 열려 있는 동안과 포커스가 에디터 바깥에 있는 동안에는 이 키가 브라우저나 호스트로 넘어갑니다.

  • 웹 앱과 Google Drive: 브라우저의 찾기 막대는 이 두 경우에만 열립니다.
  • VS Code: 확장이 ERD Editor에서 VS Code 자체의 찾기 위젯을 꺼 두므로, 이 키로 찾기 위젯이 열리는 일은 없습니다.
  • Obsidian: 다이어그램의 탭이 활성화되어 있는 동안에는 이 키가 Obsidian의 Search current file 대신 에디터로 전달됩니다.
  • JetBrains IDE: IDE의 키맵이 Ctrl + F (Windows/Linux) or ⌘ + F (Mac)를 자체적으로 사용한다면, 툴바 버튼, 빠른 검색, 캔버스 컨텍스트 메뉴로 패널을 엽니다.

에디터를 임베드한 페이지는 이 키를 다른 키로 옮기거나 제거할 수 있습니다. 단축키 변경 항목을 참고하세요.

검색 대상​

입력란 아래의 다섯 버튼으로 검색할 텍스트 종류를 고르며, 순서는 Table names, Table comments, Column names, Column comments, Memos입니다.
강조된 버튼이 켜진 버튼입니다. 버튼을 클릭하면 켜지거나 꺼지고, 패널이 다시 검색합니다. 다섯 개가 모두 꺼져 있으면 아무것도 찾지 않습니다.

패널은 처음에 Table names와 Column names만 켜진 상태로 열리므로, 코멘트와 메모를 켜지 않는 한 이름을 바꿔도 코멘트와 메모에는 영향을 주지 않습니다.

그 밖의 것은 검색하지 않습니다. 데이터 타입, 기본값, 인덱스 이름, 데이터베이스 이름, Schema SQL과 생성된 코드는 검색 대상이 아닙니다.
테이블 보기 옵션으로 숨겨진 코멘트도 검색합니다.

옵션​

Find 입력란 오른쪽에 있는 세 토글은 검색어가 일치하는 방식을 바꾸며, 이름은 툴팁에 표시됩니다. 세 토글 모두 꺼진 상태로 시작하며, 하나를 바꾸면 다시 검색합니다.

  • Match Case: 꺼져 있으면 대소문자를 구분하지 않고 매칭합니다.
  • Match Whole Word: 양쪽 어디에서도 단어로 이어지지 않는 곳만 일치 항목으로 인정합니다. 모든 문자 체계의 문자, 숫자, 결합 부호와 밑줄이 단어 문자에 해당합니다. 따라서 user는 user id와 user.id에서는 일치하지만 users, user_id, superuser 안에서는 일치하지 않습니다. .id의 점처럼 검색어의 끝 글자 자체가 단어 문자가 아니면 그쪽 끝에는 경계가 필요하지 않습니다.
  • Use Regular Expression: 검색어를 JavaScript 정규 표현식으로 취급하며, 항상 유니코드 모드이므로 \p{L}을 사용할 수 있습니다. ^와 $는 여러 줄로 된 코멘트나 메모에서 각 줄의 시작과 끝에 일치하며, .은 줄바꿈을 넘지 않습니다. \_, \-처럼 이름에 흔히 입력하는 이스케이프도 허용됩니다.

user(처럼 해석할 수 없는 정규 표현식은 아무것도 나열하지 않습니다. 개수 표시에 빨간색으로 Invalid regular expression이 표시되고, Find 입력란의 테두리가 빨간색으로 바뀝니다.
Match Case와 Match Whole Word는 정규 표현식에도 적용됩니다. ^ 하나만 쓴 경우처럼 길이가 0인 일치 항목은 나열되지 않습니다.

일반 텍스트는 입력하는 대로 검색합니다. 정규 표현식은 입력이 잠시 멈추면 검색하며, Enter나 이동 버튼, Replace, Replace All을 누르거나 행을 클릭하면 즉시 검색합니다.
검색에는 시간 제한이 없으므로, 백트래킹이 많은 정규 표현식은 검색이 끝날 때까지 에디터를 응답하지 않게 만들 수 있습니다.

검색 결과​

텍스트 종류 아래의 개수 표시 줄은 현재 위치를 알려 줍니다. Find 입력란이 비어 있는 동안에는 비어 있습니다.

개수 표시표시되는 경우
No results일치하는 항목이 없습니다.
12 matches일치 항목 중 하나로 이동하기 전입니다. 하나뿐이면 1 match입니다.
3 of 12세 번째 일치 항목이 현재 일치 항목입니다.
Invalid regular expression정규 표현식을 해석할 수 없습니다.
Replaced 12 matchesReplace All이 그만큼의 일치 항목을 바꿨습니다. 하나뿐이면 Replaced 1 match입니다.
No changesReplace All이 아무것도 바꾸지 않았습니다.
No more matches연속 Replace가 시작한 위치로 돌아왔습니다. 바꾸기 항목을 참고하세요.

그 아래의 목록에는 일치하는 곳마다 행이 하나씩 있으므로, 검색어가 두 번 들어 있는 텍스트는 두 행이 됩니다.
행은 캔버스가 아니라 문서의 순서를 따릅니다. 테이블 하나씩 차례로, 테이블 이름과 코멘트를 먼저 두고 그 뒤에 각 컬럼의 이름과 코멘트를 컬럼 순서대로 두며, 메모는 마지막에 둡니다.

각 행에는 다음이 표시됩니다.

  • 텍스트 종류를 나타내는 아이콘. 테이블 이름은 테이블, 컬럼 이름은 컬럼, 테이블 코멘트나 컬럼 코멘트는 말풍선, 메모는 메모지 아이콘입니다.
  • 일치한 부분이 강조된 텍스트 일부. 긴 텍스트는 …로 잘리고, 줄바꿈은 공백으로 표시됩니다. 행에 마우스를 올리면 전체 텍스트를 볼 수 있습니다.
  • orders.user_id · Column, users · Table comment, 또는 그냥 Memo처럼 일치 항목의 위치와 종류. 이름이 비어 있는 테이블이나 컬럼은 unnamed로 표시됩니다.

현재 일치 항목의 행은 강조되며, 보이도록 스크롤됩니다.
일치 항목이 200개를 넘으면 목록은 현재 일치 항목 주변의 200행을 그리고, Showing 1–200 of 523처럼 어느 부분을 보여 주는지 표시합니다. 일치 항목 사이를 이동하면 이 범위도 함께 움직입니다.

패널이 열려 있는 동안 목록은 문서를 따라갑니다. 캔버스에서의 편집, Undo나 Redo, 가져오기, 공동 편집자나 코딩 에이전트의 편집 등 검색 대상 텍스트가 바뀌면 다시 검색하며, 현재 일치 항목이 여전히 있으면 현재 일치 항목으로 유지됩니다. 선택, 스크롤, 마우스 올리기로는 다시 검색하지 않습니다.
패널이 숨겨져 있는 동안의 편집은 패널이 다시 표시되는 즉시 검색에 반영됩니다.

일치 항목으로 이동​

Find 입력란에서 Enter는 다음 일치 항목으로, Shift + Enter는 이전 일치 항목으로 이동합니다. 개수 표시 오른쪽의 위아래 화살표 버튼도 같은 동작을 하며, 툴팁에는 각각 Previous Match (Shift+Enter)와 Next Match (Enter)가 표시됩니다. 행을 클릭하면 그 일치 항목으로 이동합니다.
이동은 양 끝에서 순환합니다. 처음 이동하기 전까지는 현재 일치 항목이 없으므로, 첫 Enter는 첫 번째 일치 항목으로, 첫 Shift + Enter는 마지막 일치 항목으로 이동합니다.

일치 항목으로 이동하면 필요할 때 ERD 탭으로 전환한 뒤 다음과 같이 동작합니다.

  • 테이블 이름이나 코멘트, 컬럼 이름이나 코멘트라면 그 테이블만 선택하고 맨 앞으로 가져온 뒤, 일치 항목이 있는 셀에 포커스를 둡니다. 테이블 보기 옵션으로 숨겨진 코멘트의 일치 항목이라면 대신 그 옆의 이름에 포커스를 둡니다.
  • 메모라면 그 메모만 선택하고 맨 앞으로 가져옵니다.

캔버스는 테이블, 컬럼의 행, 메모가 패널 옆에 아직 완전히 보이지는 않을 때만 스크롤되며, 이때 패널이 가리지 않는 캔버스 영역의 가운데로 옮깁니다. 캔버스가 너무 좁아 패널 옆에 공간이 남지 않으면 대신 캔버스 전체의 가운데로 옮깁니다.
화면보다 높은 테이블은 헤더로, 긴 코멘트처럼 화면보다 넓은 셀은 일치한 텍스트로 스크롤됩니다. 테이블이 이름만 남도록 축소되는 70% 이하의 배율에서는 컬럼의 일치 항목으로 이동하면 그 테이블이 보이도록 스크롤됩니다.
이 스크롤은 다른 화면 위치 변경과 마찬가지로 Undo 히스토리에 기록됩니다.

Enter로 이동하면 커서가 Find 입력란에 그대로 있으므로, 이어서 입력하는 내용은 선택된 테이블이 아니라 패널로 들어갑니다.
일치 항목으로 이동해도 그리는 중인 관계를 시작하거나 끝내지 않습니다.

바꾸기​

Find 입력란 아래 줄에는 Replace 입력란과 두 버튼이 있으며, 버튼의 툴팁에는 각각 Replace (Enter)와 Replace All이 표시됩니다. 일치 항목이 없는 동안에는 두 버튼 모두 비활성화됩니다.

Replace는 Replace 입력란에서 Enter를 누르거나 버튼을 눌러 실행합니다.

  • 현재 일치 항목이 없으면 첫 번째 누름은 다음 일치 항목으로 이동만 하므로, 무엇이 바뀔지 바뀌기 전에 확인할 수 있습니다.
  • 현재 일치 항목이 있으면 그 한 곳만 바꾸고 같은 텍스트의 다른 일치 부분은 그대로 둔 뒤, 써 넣은 텍스트 다음의 일치 항목으로 이동합니다. 써 넣은 텍스트는 검색어를 포함하더라도 건너뛰므로, user를 super_user로 바꾼 뒤 super_user 안에서 다시 멈추지 않습니다.
  • 바꾸기와 다음 일치 항목으로의 스크롤은 Undo 한 단계입니다.

Replace를 연달아 누르는 연속 바꾸기는 시작한 위치로 한 바퀴 돌아오면 멈춥니다. 개수 표시에 No more matches가 표시되고, 현재 일치 항목이 없어지며, 더 눌러도 아무것도 바꾸지 않습니다.
따라서 Customer를 Big Customer로 바꾸면 Big Big Customer로 계속 커지지 않고 한 번만 바뀝니다.
일치 항목으로 이동하거나, 검색어, 옵션, 텍스트 종류를 바꾸거나, 패널을 다시 열거나, Replace All을 실행하면 연속 바꾸기가 새로 시작되며, 연속 바꾸기가 시작된 텍스트를 바꾸는 Undo나 그 밖의 편집도 마찬가지입니다. Replace 텍스트를 바꿔도 새로 시작되지 않습니다.

Replace All은 Replace 입력란에서 Ctrl + Enter (Windows/Linux) or ⌘ + Enter (Mac)를 누르거나 버튼을 눌러 실행합니다.

  • 켜져 있는 텍스트 종류의 모든 일치 항목을 바꾸고, 나머지 종류는 그대로 둡니다. 기본 텍스트 종류에서는 코멘트와 메모가 바뀌지 않습니다.
  • 바꾸는 모든 내용이 Undo 한 단계입니다. 동작 하나가 한 단계 문서를 참고하세요.
  • 개수 표시에는 Replaced N matches가 표시되며, 텍스트가 실제로 바뀐 곳만 셉니다. 정규 표현식 (user)를 $1로 바꿀 때처럼 바뀐 곳이 없으면 No changes가 표시되고 히스토리에 아무것도 기록되지 않습니다.
  • 그런 다음 현재 일치 항목이 없는 상태로 목록을 다시 검색하므로, 새 텍스트에 들어 있는 일치 항목이 나열될 수 있습니다.

두 동작 모두 마지막 검색 때의 텍스트가 아니라 누르는 시점의 텍스트를 읽습니다.

Replace 텍스트는 다음과 같이 사용됩니다.

  • Use Regular Expression이 꺼져 있으면 입력한 그대로 삽입됩니다. $에는 특별한 의미가 없으며, 일치한 텍스트의 대소문자를 따르지 않습니다. Match Case가 꺼진 상태에서 user를 member로 바꾸면 Users는 members가 됩니다.
  • Use Regular Expression이 켜져 있으면 $1부터 $99, $<name>, $&, $`, $', $$가 JavaScript의 String.prototype.replace에서처럼 치환됩니다.
  • Replace 입력란이 비어 있으면 일치 항목을 삭제합니다.

바꾸기는 새 테이블 이름, 코멘트, 컬럼 이름, 메모 텍스트를 직접 입력하는 것과 같은 일반 편집입니다.
다른 편집과 마찬가지로 히스토리에 기록되며 공동 편집자와 코딩 에이전트에게도 전달됩니다.

패널의 키​

커서가 패널 안에 있는 동안에는 다음과 같이 동작합니다.

  • Find 입력란에서 Enter와 Shift + Enter는 일치 항목 사이를 이동하고, Replace 입력란에서 Enter와 Ctrl + Enter (Windows/Linux) or ⌘ + Enter (Mac)는 바꾸기를 실행하며, Escape는 패널을 닫습니다.
  • 몇 가지 에디터 단축키는 계속 동작합니다. Ctrl + F (Windows/Linux) or ⌘ + F (Mac)는 Find 입력란의 텍스트를 선택한 채로 커서를 그 입력란으로 되돌리고, Ctrl + K (Windows/Linux) or ⌘ + K (Mac)는 빠른 검색을 열고 닫으며, Undo와 Redo는 입력란의 텍스트가 아니라 다이어그램을 되돌리고 다시 실행하고, Zoom In, Zoom Out, Zoom Reset은 캔버스를 확대/축소합니다. 단축키 문서를 참고하세요.
  • 그 밖의 모든 에디터 단축키, 방향키, Tab은 패널 안에 머물며 일반 텍스트 입력란의 키로 동작합니다. Ctrl + A (Windows/Linux) or ⌘ + A (Mac)는 입력란의 텍스트를 선택하고, Space는 공백을 입력하며, Tab은 패널의 컨트롤 사이에서 포커스를 이동합니다.
  • 호스트 자체의 저장처럼 에디터가 지정하지 않은 키는 평소대로 호스트에 전달됩니다.

읽기 전용 에디터​

readonly 에디터에서 패널은 찾기만 합니다. 헤더에는 Find가 표시되며, Replace 입력란과 버튼이 없습니다.
검색, 옵션, 텍스트 종류, 목록, 일치 항목으로 이동은 모두 동작합니다.
툴바 버튼의 툴팁에는 Find (Ctrl + F) (Windows/Linux) or Find (⌘ + F) (Mac)가 표시되지만, 빠른 검색과 컨텍스트 메뉴의 항목은 Find and Replace라는 이름을 유지합니다.

git 리비전이나 병합 미리보기처럼 VS Code가 읽기 전용으로 여는 다이어그램에도 이 찾기 전용 패널이 표시됩니다.

빠른 검색에서​

#, @, : 접두사로 검색하면 빠른 검색은 최대 100행까지 나열합니다.
이 제한 때문에 키워드가 그대로 들어 있는 텍스트가 빠지면, 100행 뒤에 Show all N matches in Find and Replace 또는 Show 1 match in Find and Replace 행이 하나 더 붙습니다. 이 행은 같은 검색으로 이 패널을 엽니다.

  • 키워드가 검색어가 되며, Match Case, Match Whole Word, Use Regular Expression은 꺼집니다.
  • 접두사가 다루는 텍스트 종류만 켜집니다. #은 Table names, @은 Column names, :은 Table comments, Column comments, Memos입니다.
  • @table.column은 컬럼 부분만 넘기므로, 패널은 모든 테이블에서 일치하는 컬럼을 나열합니다.
  • N은 패널이 열릴 때의 일치 항목 수입니다.

Diff Viewer, Time Travel, 자동 배치 미리보기가 열려 있는 동안에는 이 행이 제공되지 않습니다.
이 행이 설정한 옵션과 텍스트 종류는 이후에 패널을 열 때도 유지되므로, #에서 연 뒤에는 다른 종류를 다시 켤 때까지 Table names만 켜져 있습니다.

단축키 변경​

에디터를 임베드한 페이지는 setKeyBindingMap에서 findReplace라는 이름으로 Ctrl + F (Windows/Linux) or ⌘ + F (Mac)를 다른 키로 지정하거나 제거할 수 있습니다.
제거하면 모든 탭에서 이 키는 페이지에 맡겨집니다. 툴바 버튼, 빠른 검색, 캔버스 컨텍스트 메뉴로는 여전히 패널이 열리지만 단축키는 표시되지 않으며, 설정의 단축키 탭에 있는 Find and Replace 행에도 표시되지 않습니다.