Undo, Redo
이전 편집 상태로 되돌아가거나 이후 상태로 이동할 수 있습니다.
히스토리에는 변경 사항을 최대 2048개까지 보관합니다.
- Undo:
Ctrl + Z(Windows/Linux) or⌘ + Z(Mac) - Redo:
Ctrl + Shift + Z(Windows/Linux) or⌘ + Shift + Z(Mac)
ERD 탭에서는 툴바에도 동일한 두 명령이 Time Travel 옆에 Undo, Redo 버튼으로 있습니다. 사전 탭에서는 Time Travel 없이 Undo와 Redo가 표시되며, 그 밖의 탭에서는 표시되지 않습니다.
되돌리거나 다시 실행할 내용이 있을 때만 활성화됩니다. readonly 에디터에서는 이 버튼들과 Time Travel이 숨겨지고, 단축키도 아무것도 되돌리거나 다시 실행하지 않습니다.
Undo와 Redo가 다이어그램의 히스토리에 적용되는 것은 ERD 탭에서뿐입니다.
ERD 탭에서는 빠른 검색, Table Properties, Diff Viewer, Auto Layout 미리보기, Export image 대화 상자, 컬럼 매핑, Time Travel이 열려 있는 동안 단축키가 동작하지 않습니다.
키보드 포커스가 트리를 포함한 탐색기 안 어디에 있든, 색상 선택기가 열려 있든 단축키는 계속 동작합니다. 커서가 Find, Replace, Hex처럼 그 입력란 중 하나에 있어도 입력란의 텍스트가 아니라 다이어그램을 되돌리고 다시 실행합니다.
그 밖의 탭에서는 다음과 같습니다.
- 사전: 표시된 시트(
Domains,Words,Terms)의 편집을 다이어그램의 히스토리가 아닌 그 시트 자체의 히스토리에서 되돌리고 다시 실행합니다.Checks시트에서는 아무 동작도 하지 않습니다. 사전 시트 항목을 참고하세요. - Visualization:
Flow에서는 같은 키가Previous table과Next table처럼 Flow가 보여 준 범위를 따라 한 단계 뒤로, 한 단계 앞으로 이동하며,readonly에디터에서도 마찬가지입니다. 그곳에서는 다이어그램을 되돌리거나 다시 실행하지 않습니다. 이전 테이블과 다음 테이블 문서를 참고하세요.Graph에서는 아무 동작도 하지 않습니다. - Schema SQL, Code Generator, 설정: 사용할 수 없습니다. Schema SQL 탭의
Before tables와After tables입력란에서는 같은 키가 대신 그 입력란에서의 입력을 되돌리고 다시 실행합니다.
히스토리는 현재 세션의 메모리에만 유지됩니다. 문서에 저장되지 않으므로 다이어그램을 다시 열면 히스토리는 비어 있는 상태로 시작합니다.

히스토리에 기록되는 내용
기록되는 항목:
- 테이블과 메모: 추가, 삭제, 이동, 색상, 테이블의 이름·논리명·코멘트, 메모의 텍스트와 크기.
- 테이블 그룹: 추가, 삭제, 이동, 크기 조절, 이름, 색상, 그리고 각 테이블이 속한 그룹. 테이블 그룹 문서를 참고하세요.
- 컬럼: 추가, 삭제, 순서 변경, 논리명, 각 컬럼이 연결된 도메인, 그리고 모든 컬럼 옵션.
- 사전이 생성하는 물리명과, 각 이름이 직접 입력한 이름인지 사전이 생성한 이름인지의 여부. Undo 한 번으로 이름과 그 상태가 함께 돌아옵니다. 직접 입력한 이름 문서를 참고하세요.
Derive Physical Name Again과Derive Physical Names Again. 물리명 다시 생성 문서를 참고하세요.- 관계: 추가, 삭제, 타입 변경, 컬럼 매핑에서 지정한 컬럼, 그리고
On Delete나On Update에서 고른 각 항목. ON DELETE와 ON UPDATE 문서를 참고하세요. 삭제를 되돌리면 관계가 ON DELETE와 ON UPDATE 동작까지 그대로 복원됩니다. - 인덱스와 인덱스 컬럼.
- 화면 위치, 확대/축소 레벨,
View Option토글. - Schema SQL 탭의
Before tables와After tables스크립트. 입력란을 벗어나 적용하는 편집마다 한 단계입니다. 앞뒤 스크립트 문서를 참고하세요. - 파일 가져오기와
Import and Add로 파일 추가.
기록되지 않는 항목:
- 데이터베이스 벤더와 데이터베이스 이름.
- Code Generator 언어,
Table Name Case,Column Name Case. - 괄호 타입. Schema SQL 탭에서 설정하든 Code Generator 탭에서 설정하든 마찬가지입니다.
- 에디터 창에 속하는 Schema SQL 탭의
Statements,Header,Write logical names into empty comments,Tables선택. 옵션 패널 문서를 참고하세요. Lock행을 포함한 설정 탭의 모든 항목.- 이름 표시 전환. 어느 곳에서 전환하든, 잠금이 켜져 있든 꺼져 있든 마찬가지입니다. 보기 전환 문서를 참고하세요.
- 테마와 표시 언어. 언어와 테마 문서를 참고하세요.
- 어느 테이블, 메모, 그룹이 다른 것들보다 앞에 그려지는지.
- 탐색기: 탐색기 열기, 닫기, 크기 조절, 트리 접기, 검색어와 검색 옵션. 다만
Replace와Replace All이 바꾸는 내용은 기록되며, 이동할 때 생기는 스크롤도 기록됩니다. 동작 하나가 한 단계 항목을 참고하세요. - Visualization 탭에서 두 모드의 확대/축소와 화면 이동, 그래프 노드나 Flow 카드 이동,
Tidy Up, 행 표시, 테이블 포커스,Previous table과Next table로 한 단계씩 이동하는 것. Flow는 문서를 편집하지 않음 문서를 참고하세요. - 사전 탭에 표시된 시트, 그리고 각 시트의 검색, 선택, 스크롤, 열 너비. 탭 열기 문서를 참고하세요.
이 항목들의 변경은 되돌릴 수 없습니다.
읽기 전용 에디터는 아무것도 기록하지 않습니다. 화면 위치, 확대/축소, View Option 토글은 탭, 이름 표시, 데이터베이스, 코드 설정과 함께 거기서도 바뀌지만 그 화면에서만 바뀌므로 되돌릴 것이 없습니다. 설정의 읽기 전용 에디터 문서를 참고하세요.
사전 탭에서 한 편집은 되돌릴 수 있지만, 이 히스토리가 아니라 그 편집이 속한 시트의 히스토리에 기록됩니다. 따라서 ERD 탭의 Undo는 도메인의 새 Data Type과 그 타입이 바꾼 컬럼 타입을 포함해 사전 탭의 편집을 하나도 되돌리지 않습니다. 사전 시트 항목을 참고하세요.
다른 에디터에서 도착한 변경 사항도 기록되지 않으므로, Undo는 자신의 변경만 되돌립니다. 공동 편집 세션에서는 각 에디터가 자신의 변경을 되돌리며, MCP 서버로 편집하는 코딩 에이전트는 erd_undo로 자신의 변경을 되돌립니다.
다이어그램 전체를 대체하는 Import를 되돌리면 이전 다이어그램이 가져올 당시 에디터가 가지고 있던 모습 그대로 돌아오며, 각 잠금의 켜짐과 꺼짐, 잠긴 각 값도 그때 그대로 돌아옵니다.
그 다이어그램에서 Viewport가 잠겨 있었다면 화면과 확대/축소는 보고 있던 위치가 아니라 잠긴 화면, 즉 다이어그램이 열리는 위치로 돌아갑니다. Viewport가 잠겨 있지 않았다면 가져올 때 보고 있던 위치로 돌아갑니다. 지금 열려 있는 탭, Code Generator 언어, 이름 표시 같은 그 밖의 잠긴 설정은 화면에 보이는 그대로 유지됩니다.
새 다이어그램은 모든 잠금이 켜진 상태로 시작합니다. 이런 되돌리기에서도 화면을 유지하려면 가져오기 전에 Viewport 잠금을 해제하세요. 가져온 뒤에 잠금을 해제하거나, 자체 Viewport 잠금이 꺼진 JSON 파일을 가져와도 되돌리기가 돌아가는 위치는 바뀌지 않습니다.
JSON 파일 가져오기를 되돌리면 이전 다이어그램에 있던 단어, 용어, 도메인도 돌아옵니다. Schema SQL, GraphQL, DBML, AML 가져오기는 사전을 유지하므로, 그 되돌리기와 다시 실행은 그 뒤 사전 탭에서 한 편집을 포함해 사전을 지금 상태 그대로 둡니다.
ERD 탭에서 컬럼을 도메인에 다시 연결하거나 도메인에 연결된 컬럼을 되살리는 Undo나 Redo는 그 컬럼에 도메인의 현재 데이터 타입을 줍니다. 연결된 컬럼에 다른 타입을 되돌려 놓는 Undo나 Redo는 그 컬럼의 연결을 해제합니다. 도메인과 데이터 타입 문서를 참고하세요.
동작 하나가 한 단계
하나의 동작이 발생시킨 모든 변경은 히스토리 항목 하나가 됩니다.
여러 테이블과 메모를 한 번에 붙여넣거나 Alt + drag로 복제한 것은 한 단계로 되돌려집니다.
Delete 또는 Backspace를 한 번 누르는 것, 또는 컨텍스트 메뉴의 Delete selected나 Delete columns는 삭제하는 테이블, 메모, 테이블 그룹, 컬럼이 몇 개든 한 단계입니다.
선택한 여러 컬럼의 primary key 전환은 Alt + K (Windows/Linux) or ⌥ + K (Mac)로 하든 테이블 컨텍스트 메뉴의 Primary Key on selected columns로 하든 한 단계입니다.
선택 항목의 색상을 지정하거나 No color 또는 Remove color로 지우는 것은 선택된 테이블, 메모, 그룹이 몇 개든 한 단계입니다. 선택된 모든 항목에 이미 지정된 색상을 고르면 단계가 기록되지 않으며, 선택된 항목 중 색상이 있는 것이 없을 때의 No color도 마찬가지입니다.
컬럼 매핑의 Map이나 Save는 추가하는 foreign key 컬럼과 바꾸는 데이터 타입을 포함해 한 단계입니다.
Import and Add는 추가된 블록을 화면에 보이게 하는 데 스크롤이 필요하면 그 스크롤을 포함해 한 단계입니다.
논리명 셀 아래 목록에서 용어를 고르는 것은 한 단계입니다. 논리명, 그 논리명이 생성하는 물리명, 그리고 컬럼이라면 용어의 도메인과 그 데이터 타입이 여기에 포함됩니다. 용어명 자동완성 문서를 참고하세요.
컬럼의 도메인 셀에서 도메인을 고르는 것은 그 도메인이 컬럼에 주는 데이터 타입과 관계 데이터 타입 동기화가 관계를 따라 전달하는 것을 포함해 한 단계입니다. 컬럼의 연결을 해제하는 None을 고르는 것도 한 단계입니다. 도메인 셀 문서를 참고하세요. 연결된 컬럼에 도메인과 다른 데이터 타입을 입력하면 그 입력의 단계에서 컬럼의 연결이 해제됩니다.
Derive Physical Name Again이나 Derive Physical Names Again은 바꾸는 이름, 도메인 연결, 데이터 타입이 몇 개든 한 단계입니다. 아무것도 바꾸지 않을 때만 단계를 기록하지 않습니다. 직접 입력한 이름을 다시 사전이 생성하는 이름으로 되돌리는 것은, 그 이름이 이미 사전이 생성하는 값과 같더라도 변경입니다.
테이블 그룹을 그리거나, Group selected tables 또는 T 다음 G로 선택한 테이블을 그룹으로 묶어 만드는 것은 그룹에 들어가는 모든 테이블을 포함해 한 단계입니다. 그룹 삭제는 한 단계이며, 되돌리면 그룹이 그 테이블을 담은 채로 돌아옵니다.
그룹의 제목 표시줄을 드래그하면 그룹과 그 안의 모든 테이블이 한 단계로 이동합니다. 그룹 안으로 또는 밖으로 옮겨 놓은 테이블은 마지막으로 움직인 뒤 약 200ms 안에 버튼을 놓으면 드래그와 같은 단계에서 그룹이 바뀌므로, Undo 한 번으로 테이블이 원래 위치와 원래 그룹으로 돌아갑니다. 놓기 전에 더 오래 멈췄다면 그룹 변경은 별도의 단계가 되며, 첫 번째 Undo는 그 변경만 되돌립니다.
그룹의 변이나 모서리를 드래그한 크기 조절은 버튼을 놓을 때 한 번 기록됩니다.
자동 배치 적용은 그룹을 그 안의 테이블에 맞춰 조정하는 것까지 포함해 한 단계입니다.
찾기와 바꾸기의 Replace All도 바꾸는 테이블 이름, 컬럼 이름, 논리명, 인덱스 이름, 테이블 그룹 이름, 코멘트, 메모가 몇 개든, 논리명이 생성하는 물리명과 도메인 연결을 포함해 한 단계입니다. Preserve Case가 모든 일치 항목을 원래와 똑같이 다시 써 넣을 때처럼 아무것도 바꾸지 않으면 단계를 기록하지 않습니다.
Replace 한 번도 한 단계이며, 논리명이 생성하는 것과 다음 일치 항목으로 가는 데 필요한 스크롤도 같은 단계에 포함됩니다. 일치 항목을 원래와 똑같이 다시 써 넣을 때는 그 스크롤만 기록하며, 스크롤이 없으면 아무것도 기록하지 않습니다.
일치 항목으로 이동하면 그 일치 항목이 이미 잘 보이는 상태가 아닐 때만 캔버스가 스크롤됩니다. 이동 후 화면 위치 문서를 참고하세요. 이 스크롤은 다른 화면 위치 변경과 마찬가지로 기록되므로, 일치 항목 사이를 이동한 뒤에는 Undo가 먼저 그 스크롤들을 한 단계에 하나씩 되돌립니다.
캔버스의 대상으로 이동하는 그 밖의 기능도 같은 방식으로 스크롤을 기록합니다. 탐색기의 행, 빠른 검색 결과, 사전 탭 Checks 시트에서 테이블이나 컬럼을 가리키는 검사, Flow의 외부 링크 카드 버튼을 고를 때가 여기에 해당합니다. 화면을 그대로 두는 이동은 아무것도 기록하지 않습니다. Diff Viewer 목록에서 행을 고르는 것도 Diff Viewer 자체의 읽기 전용 양쪽 화면만 움직이므로 아무것도 기록하지 않습니다.
연속된 드래그, 캔버스 이동, 확대/축소, 핀치, 색상 변경도 약 200ms 동안 버퍼링되어 항목 하나로 기록됩니다.
전체 이동 거리가 20px 미만인 드래그는 이동을 기록하지 않습니다. 그 드래그로 그룹이 바뀌었다면 그 변경만 기록됩니다.
셀이나 메모에 입력하는 내용은 동작 단위가 아니라 입력 단위로 기록됩니다. 입력한 글자 하나, 붙여넣기 한 번, IME 조합의 각 단계가 각각 한 단계가 됩니다.
논리명 셀도 같은 방식으로 기록됩니다. 편집모드가 열릴 때의 논리명과 다른 논리명으로 닫히면, 사전이 그 논리명에서 생성하는 물리명이 입력 뒤에 한 단계 더 기록됩니다. 첫 번째 Undo는 용어가 가져온 도메인, 데이터 타입과 함께 그 물리명만 되돌리고, 입력한 논리명은 그대로 둡니다. 아무것도 생성되지 않으면 더 기록되는 것은 없습니다. 논리명 입력 문서를 참고하세요.
테이블 그룹의 이름은 Enter를 누르거나 입력란을 벗어나 저장될 때 한 번 기록되므로, 방금 만든 그룹에 입력한 이름은 그룹 생성과 별개의 단계입니다. Esc를 누르거나 이름을 바꾸지 않으면 아무것도 기록되지 않습니다.
사전 시트
사전 탭의 Domains, Words, Terms 시트는 각각 다이어그램과 별도로 자체 히스토리를 유지합니다. 탭에서 한 모든 편집은 그 편집이 행을 쓰는 시트의 히스토리에 기록됩니다. 다이어그램의 히스토리와 마찬가지로 각 히스토리는 최대 2048단계까지 보관하며, 세션 동안 메모리에만 유지됩니다.
- 키보드 포커스가 탭 안에 있으면
Ctrl + Z(Windows/Linux) or⌘ + Z(Mac)는 표시된 시트의 마지막 편집을 되돌리고,Ctrl + Shift + Z(Windows/Linux) or⌘ + Shift + Z(Mac)는 마지막으로 되돌린 편집을 다시 실행합니다. - 툴바의
Undo와Redo도 같은 동작을 하며, 표시된 시트에 되돌리거나 다시 실행할 편집이 있을 때만 활성화됩니다. 버튼을 눌러도 키보드 포커스는 그리드나 검색 입력란 등 원래 있던 곳에 그대로 있습니다. 이 탭에는Time Travel이 없습니다. - 아무것도 편집하지 않는
Checks시트에서는 버튼이 활성화되지 않으며, 버튼도 키도 아무 동작도 하지 않습니다. - 셀 편집모드가 열려 있거나 커서가 탭의 검색 입력란에 있으면, 키는 대신 그곳에서의 입력을 되돌리고 다시 실행합니다.
히스토리는 서로 섞이지 않습니다. ERD 탭의 Undo는 시트의 편집을 되돌리지 않으며, 시트의 Undo는 다른 시트의 편집이나 다이어그램의 편집을 되돌리지 않습니다. 각 시트는 시트나 탭을 전환하는 동안에도 히스토리를 유지합니다.
다음은 각각 그 시트의 한 단계입니다.
- 셀 편집. 입력한 글자마다가 아니라 값이 기록될 때 한 번, 그리고 값이 바뀔 때만 기록됩니다. 셀 편집 문서를 참고하세요.
- 붙여넣기(추가되는 행 포함), 그리고
Delete나Backspace로 선택된 셀을 지우는 것. 복사와 붙여넣기 문서를 참고하세요. Add Row, 그리고 위쪽 막대, 그리드 메뉴, 키로 하는 행 삽입과 삭제 각각. 몇 개의 행에 걸치든 마찬가지입니다. 행 추가와 삭제 문서를 참고하세요.- 목록에서 고른 용어의 도메인.
None도 포함됩니다. 용어의 도메인 문서를 참고하세요. - 정렬. 정렬 문서를 참고하세요.
Import CSV로 가져온 CSV 파일 하나. 추가하거나 갱신하는 행이 몇 개든 마찬가지입니다. 어느 시트에서 가져왔든 파일이 채우는 시트의 단계이며, 탭은 그 시트를 표시합니다. 가져오기 문서를 참고하세요.
같은 파일을 다시 가져오거나 이미 그 순서인 시트를 정렬하는 것처럼 아무것도 바꾸지 않는 쓰기는 단계를 기록하지 않으며, Nothing saved: … 토스트와 함께 거부된 쓰기도 마찬가지입니다. Physical Name이 없는 용어에 이름을 주면, 그 용어의 단어들이 조합하는 물리명이 그 편집의 단계에 포함됩니다.
도메인의 새 Data Type은 그 도메인에 연결된 컬럼에 주는 타입, 그리고 관계 데이터 타입 동기화가 그 컬럼들에서 전달하는 타입과 함께 Domains 시트의 한 단계입니다. 도메인과 데이터 타입 문서를 참고하세요.
이를 되돌리거나 다시 실행하면 그 시점에 도메인에 연결되어 있는 컬럼의 타입이 다시 지정되므로, 그 뒤 다른 도메인에 연결했거나 타입을 바꾼 컬럼은 자신의 타입을 유지합니다. 동기화가 자기 도메인과의 연결을 해제한 foreign key처럼 그 단계에서 연결이 해제된 컬럼은, 아직 연결이 해제된 상태이고 그 단계가 남긴 타입을 여전히 가지고 있을 때만 다시 연결됩니다.
readonly 에디터에서는 버튼이 숨겨지고, 키도 아무것도 되돌리거나 다시 실행하지 않습니다.
공동 편집자와 코딩 에이전트의 변경도 시트의 히스토리에 기록되지 않습니다.
사전이 대체될 때는 모든 시트의 히스토리가 비워집니다. 직접 했든 공동 편집자가 했든 JSON 파일의 Import, 그 되돌리기와 다시 실행, 에디터에 다른 다이어그램을 불러오는 것이 여기에 해당합니다. Schema SQL, GraphQL, DBML, AML Import는 되돌리기와 다시 실행을 거쳐서도 사전을 유지하며, 그와 함께 모든 시트의 히스토리도 유지합니다.
Time Travel
툴바에서 ERD 탭의 Undo, Redo 옆에 있는 Time Travel 버튼으로 열 수 있습니다.
다이어그램의 히스토리에 기록된 변경이 하나도 없으면 버튼은 동작하지 않습니다. 읽기 전용 에디터에는 이 버튼이 없으며, 읽기 전용이 되는 에디터는 Time Travel을 적용하지 않고 닫습니다.
Time Travel은 다이어그램의 읽기 전용 복사본을 별도로 열며, Viewport나 Name View 잠금이 켜져 있는지와 상관없이 캔버스에 현재 보이는 스크롤 위치, 확대/축소 레벨, 이름 표시로 보여 줍니다.
다이어그램의 히스토리만 따라 이동하므로, 사전 시트의 편집은 Time Travel의 시점에 포함되지 않습니다.
슬라이더를 드래그하거나 트랙의 아무 곳이나 클릭해 편집 히스토리 전체를 이동하며 각 시점을 미리 볼 수 있습니다. 슬라이더의 가장 왼쪽은 첫 번째로 기록된 변경 직전 상태이며, 열릴 때는 슬라이더 손잡이가 현재 상태에 놓입니다.
미리보기는 조작할 수 없습니다. 미니맵은 그려지지만 이동, 스크롤, 편집이 불가능하며 적용하기 전까지 실제 문서는 그대로 유지됩니다.
Apply를 누르면 선택한 시점으로 복원되고, Cancel 또는 Esc를 누르면 문서를 변경하지 않고 나갑니다.
