Перейти к основному содержимому

Отмена и повтор

Можно вернуться к предыдущему состоянию редактирования или перейти вперед к более позднему.
История хранит до 2048 изменений.

  • Отмена: Ctrl + Z (Windows/Linux) или ⌘ + Z (Mac)
  • Повтор: Ctrl + Shift + Z (Windows/Linux) или ⌘ + Shift + Z (Mac)

На вкладке ERD на панели инструментов те же две команды есть в виде кнопок Undo и Redo, рядом с кнопкой Time Travel. На вкладке «Словарь» на ней отображаются кнопки Undo и Redo без Time Travel, а на остальных вкладках их нет.
Они подсвечиваются, только когда есть что отменить или повторить. Редактор с атрибутом readonly скрывает их и Time Travel, а сочетания клавиш ничего не отменяют и не повторяют.

Отмена и повтор действуют на историю изменений диаграммы только на вкладке ERD.
Сочетания клавиш не работают там, пока открыт Быстрый поиск, окно Table Properties, окно Diff Viewer, предварительный просмотр Auto Layout, окно Export image, окно «Сопоставить столбцы» или Путешествие во времени.
Они продолжают работать, пока фокус клавиатуры находится в любом месте Обозревателя, включая его дерево, и пока открыто окно выбора цвета. Даже если курсор ввода находится в одном из полей Обозревателя или окна выбора цвета, например в поле поиска, поле замены или поле Hex, они отменяют и повторяют изменения диаграммы, а не текста в поле.

На остальных вкладках:

  • Вкладка «Словарь»: они отменяют и повторяют правки открытого листа (Domains, Words или Terms) по собственной истории этого листа, но никогда не по истории диаграммы. На листе Checks они ничего не делают — см. Листы словарей.
  • Вкладка «Визуализация»: в режиме Flow те же клавиши делают шаг назад и вперед по тому, что показывал Flow, как и кнопки Previous table и Next table, в том числе в редакторе с атрибутом readonly. Там они никогда не отменяют и не повторяют изменения диаграммы — см. Предыдущая и следующая таблица. В режиме Graph они ничего не делают.
  • Вкладки «Схема SQL», «Генератор кода» и «Настройки»: они недоступны. В полях Before tables и After tables на вкладке «Схема SQL» те же клавиши вместо этого отменяют и повторяют ввод в самом поле.

История хранится в памяти в течение текущего сеанса. Она не сохраняется в документе, поэтому после повторного открытия диаграммы история пуста.

Перемещение таблицы и удаление столбца с помощью ⌥ + Backspace, затем отмена обоих действий с помощью ⌘ + Z и их повтор с помощью ⌘ + Shift + Z

Что записывается в историю​

Записывается:

  • Таблицы и заметки: добавление, удаление, перемещение и цвет; имя, логическое имя и комментарий таблицы; текст и размер заметки.
  • Группы таблиц: добавление, удаление, перемещение, изменение размера, имя, цвет и то, в какой группе находится каждая таблица, — см. Группы таблиц.
  • Столбцы: добавление, удаление, изменение порядка, логическое имя, домен, к которому привязан каждый столбец, и все параметры столбца.
  • Физические имена, которые формируют словари, и то, является ли каждое имя вашим собственным или сформированным словарями: одна отмена возвращает имя вместе с этим состоянием — см. Ваши собственные имена.
  • Команды Derive Physical Name Again и Derive Physical Names Again — см. Повторное формирование физических имен.
  • Связи: добавление, удаление, изменение типа, столбцы, заданные в окне «Сопоставить столбцы», и каждый выбор в пункте On Delete или On Update — см. ON DELETE и ON UPDATE. Отмена удаления возвращает связь вместе с ее действиями ON DELETE и ON UPDATE.
  • Индексы и их столбцы.
  • Положение вида, масштаб и переключатели View Option.
  • Скрипты Before tables и After tables на вкладке «Схема SQL», по одному шагу на каждую правку, применяемую при выходе из поля, — см. Скрипты перед таблицами и после них.
  • Импорт файла и добавление файла с помощью пункта Import and Add.

Не записывается:

  • СУБД и имя базы данных.
  • Язык Генератора кода, Table Name Case и Column Name Case.
  • Тип кавычек, независимо от того, задан ли он на вкладке «Схема SQL» или на вкладке «Генератор кода».
  • Выбор параметров Statements, Header, Write logical names into empty comments и Tables на вкладке «Схема SQL», который относится к окну редактора, — см. Панель параметров.
  • Все на вкладке «Настройки», включая строки Lock.
  • Переключение режима отображения имен в любом из мест, где оно доступно, независимо от того, включена ли его блокировка, — см. Переключение режима отображения.
  • Тема и язык интерфейса — см. Язык и тема.
  • То, какая таблица, заметка или группа отображается поверх остальных.
  • Обозреватель: его открытие, закрытие или изменение размера, сворачивание его дерева, а также текст и параметры поиска. Однако то, что изменяют кнопки Replace и Replace All, записывается, как и прокрутка, которую выполняет переход, — см. Один жест — один шаг.
  • Масштабирование и перемещение вида на вкладке «Визуализация» в любом из режимов, перемещение узлов графа или карточек Flow, Tidy Up, отображение строк, фокус на таблицах и шаги кнопками Previous table и Next table — см. Flow никогда не изменяет документ.
  • Открытый лист вкладки «Словарь», а также поиск, выделение, прокрутка и ширина столбцов каждого листа — см. Открытие вкладки.

Изменение любого из этих пунктов отменить нельзя.

Редактор только для чтения не записывает вообще ничего. Положение вида, масштаб и переключатели View Option там по-прежнему меняются, как и вкладка, режим отображения имен, база данных и настройки кода, но только на этом экране, поэтому отменять нечего — см. Режим только для чтения в разделе «Настройки».

Правки, сделанные на вкладке «Словарь», можно отменить, но они попадают в историю своего листа, а не в эту, поэтому отмена на вкладке ERD никогда их не откатывает, даже новый тип Data Type домена и измененные им типы столбцов, — см. Листы словарей.

Изменения, поступающие из другого редактора, тоже не записываются, поэтому отмена откатывает только ваши собственные изменения. В сеансе совместного редактирования каждый редактор отменяет свои изменения, а агент для программирования, который редактирует через MCP-сервер, отменяет свои с помощью инструмента erd_undo.

Отмена импорта через пункт Import, который заменяет всю диаграмму, возвращает прежнюю диаграмму в том виде, в каком она была в редакторе на момент импорта, вместе с состоянием каждой блокировки и каждым заблокированным значением на тот момент.
Если в той диаграмме была включена блокировка Viewport, вид и масштаб возвращаются к заблокированному виду, с которого открывается диаграмма, а не туда, где находились вы. Если же блокировка Viewport была выключена, они возвращаются туда, где вы находились в момент импорта. Остальные заблокированные настройки, например открытая вкладка, язык Генератора кода или режим отображения имен, остаются такими, как сейчас на вашем экране.
В новой диаграмме все блокировки изначально включены. Чтобы сохранить свой вид при такой отмене, выключите блокировку Viewport до импорта. Если выключить ее после импорта или импортировать JSON-файл, в котором собственная блокировка Viewport выключена, место, куда ведет отмена, не изменится.
Отмена или повтор импорта через Import также завершает рисуемую связь — см. Создание связи.

Отмена импорта JSON-файла также возвращает слова, термины и домены, которые были в прежней диаграмме. Импорт Схемы SQL, GraphQL, DBML или AML сохраняет словари, поэтому его отмена и повтор оставляют их в текущем состоянии, включая правки, сделанные с тех пор на вкладке «Словарь».

Отмена или повтор на вкладке ERD, которые снова привязывают столбец к домену или возвращают столбец, привязанный к домену, дают столбцу текущий тип данных домена. Отмена или повтор, которые возвращают привязанному столбцу другой тип, отвязывают его от домена — см. Домены и типы данных.

Один жест — один шаг​

Все, что отправляет один жест, становится одной записью в истории.
Вставка нескольких таблиц и заметок за один раз или их дублирование с помощью Alt + drag отменяется за один шаг.

Одно нажатие клавиши Delete или Backspace либо выбор пункта Delete selected или Delete columns в контекстном меню составляет один шаг, сколько бы таблиц, заметок, групп таблиц или столбцов при этом ни удалялось.
Переключение первичного ключа на нескольких выделенных столбцах составляет один шаг — как с помощью Alt + K (Windows/Linux) или ⌥ + K (Mac), так и с помощью пункта Primary Key on selected columns в контекстном меню таблицы.
Задание цвета выделенным элементам или его снятие кнопкой No color либо пунктом Remove color составляет один шаг, сколько бы таблиц, заметок и групп ни было выделено. Выбор цвета, который уже есть у всех выделенных элементов, шаг не записывает, как и кнопка No color, если ни у одного выделенного элемента нет цвета.
Нажатие кнопки Map или Save в окне «Сопоставить столбцы» составляет один шаг вместе со столбцами внешнего ключа, которые оно добавляет, и типами данных, которые оно изменяет.
Импорт через пункт Import and Add составляет один шаг вместе с прокруткой, которая выводит добавленный блок в область просмотра, если она нужна.

Выбор термина из списка под ячейкой логического имени составляет один шаг: логическое имя, сформированное из него физическое имя и, для столбца, домен термина с его типом данных — см. Автодополнение терминов.
Выбор домена в ячейке домена столбца составляет один шаг вместе с типом данных, который он дает столбцу, и тем, что передает по связям Синхронизация типа данных в связях. Выбор значения None, которое отвязывает столбец от домена, тоже составляет один шаг — см. Ячейка домена. Ввод в привязанный столбец типа данных, отличного от типа его домена, отвязывает столбец от домена в шаге этого ввода.
Команда Derive Physical Name Again или Derive Physical Names Again составляет один шаг, сколько бы имен, привязок к доменам и типов данных она ни изменила. Шаг не записывается, только если она ничего не изменяет. Возврат вашего собственного имени словарям — это изменение, даже если имя уже содержит то, что они дают.

Создание группы таблиц — рисованием или группировкой выделенных таблиц с помощью пункта Group selected tables или клавиш T, затем G — составляет один шаг вместе со всеми таблицами, которые в нее попадают. Удаление группы составляет один шаг, а его отмена возвращает группу вместе с ее таблицами.
Перетаскивание группы за строку заголовка перемещает группу и все ее таблицы за один шаг. Таблицы, перетащенные в группу или из группы, меняют группу в том же шаге, что и их перетаскивание, если отпустить их в течение примерно 200ms после последнего движения, поэтому одна отмена возвращает их на прежнее место и в прежние группы. Если перед отпусканием была более долгая пауза, смена группы становится отдельным шагом, и первая отмена откатывает только ее.
Изменение размера группы за край или угол записывается один раз — в момент отпускания.
Применение Автоматического размещения составляет один шаг, включая группы, которые оно подгоняет под их таблицы.

Нажатие кнопки Replace All в Поиске и замене тоже составляет один шаг, сколько бы имен таблиц и столбцов, логических имен, имен индексов и групп таблиц, а также комментариев и заметок оно ни изменило, включая физические имена и привязки к доменам, которые формируются из логических имен. Если оно ничего не изменяет, например когда параметр Preserve Case записывает каждое совпадение обратно в прежнем виде, шаг не записывается.
Одно нажатие кнопки Replace составляет один шаг, включая то, что формируется из логического имени, и прокрутку к следующему совпадению, если она для этого совпадения нужна. Если совпадение при этом записывается обратно в прежнем виде, в историю попадает только эта прокрутка, а если прокрутки нет — ничего.
Переход к совпадению прокручивает холст, только если совпадение еще не видно достаточно хорошо, — см. Куда ведет переход. Эта прокрутка записывается так же, как любое другое изменение положения вида, поэтому после перемещения по совпадениям отмена сначала откатывает эти прокрутки, по одной за шаг.
Другие переходы, которые ведут на холст, записывают свою прокрутку так же: выбор строки в Обозревателе, результата Быстрого поиска или проверки на листе Checks вкладки «Словарь», указывающей на таблицу или столбец, либо нажатие кнопки карточки со значком внешней ссылки в режиме Flow. Переход, который оставляет вид на месте, ничего не записывает. Выбор строки в списке окна Diff Viewer тоже ничего не записывает, так как он прокручивает лишь собственные стороны Просмотра различий, доступные только для чтения.

Непрерывное перетаскивание, перемещение холста, масштабирование, жест сведения пальцев или изменение цвета буферизуется примерно на 200ms и тоже попадает в историю одной записью.
Перетаскивание с общим смещением меньше 20px не записывает перемещение. Записывается только вызванная им смена группы, если она есть.

Ввод текста в ячейку или заметку записывается по отдельным операциям ввода, а не по жестам: каждый введенный символ, каждая вставка и каждый шаг набора в методе ввода (IME) — это отдельный шаг.
Ячейка логического имени записывается так же. Если ее поле редактирования закрывается с логическим именем, отличным от того, с которым оно открылось, физическое имя, которое словари формируют из него, становится еще одним шагом после ввода. Первая отмена откатывает только это имя вместе с доменом и типом данных, которые принес термин, и оставляет введенное вами логическое имя. Если ничего не формируется, больше ничего не записывается — см. Ввод логического имени.
Имя группы таблиц записывается один раз, когда его сохраняет нажатие Enter или выход из поля, поэтому имя, которое вы вводите для только что созданной группы, составляет шаг, отдельный от ее создания. Клавиша Esc или имя, оставленное без изменений, ничего не записывают.

Листы словарей​

Каждый из листов Domains, Words и Terms вкладки «Словарь» ведет собственную историю изменений, отдельную от истории диаграммы. Каждая правка, сделанная на вкладке, попадает в историю того листа, строки которого она записывает. Как и история диаграммы, каждая из этих историй содержит до 2048 шагов и хранится в памяти в течение сеанса.

  • Пока фокус клавиатуры находится на вкладке, Ctrl + Z (Windows/Linux) или ⌘ + Z (Mac) отменяет последнюю правку открытого листа, а Ctrl + Shift + Z (Windows/Linux) или ⌘ + Shift + Z (Mac) повторяет последнюю отмененную.
  • Кнопки Undo и Redo на панели инструментов делают то же самое и подсвечиваются, только когда у открытого листа есть правка, которую можно отменить или повторить. Их нажатие оставляет фокус клавиатуры там, где он был, — в сетке или в поле поиска. Кнопки Time Travel на этой вкладке нет.
  • На листе Checks, где ничего не редактируется, кнопки остаются неподсвеченными, и ни они, ни клавиши ничего не делают.
  • Если открыто редактирование ячейки или курсор ввода находится в поле поиска вкладки, клавиши вместо этого отменяют и повторяют ввод там.

Истории никогда не пересекаются. Отмена на вкладке ERD никогда не откатывает правку листа, а отмена на листе никогда не откатывает правку другого листа или диаграммы. Каждый лист сохраняет свою историю, пока вы переключаете листы или вкладки.

Каждое из следующих действий составляет один шаг своего листа:

  • Правка ячейки, которая записывается один раз, в момент записи значения, а не по каждому введенному символу, и только если она изменяет значение, — см. Редактирование ячеек.
  • Вставка, включая добавляемые ею строки, и очистка выделенных ячеек клавишей Delete или Backspace — см. Копирование и вставка.
  • Кнопка Add Row, а также каждая вставка или удаление строк с панели, из меню сетки или клавишами, сколько бы строк они ни охватывали, — см. Добавление и удаление строк.
  • Выбор домена термина из его списка, включая значение None, — см. Домен термина.
  • Сортировка — см. Сортировка.
  • Один CSV-файл, импортированный кнопкой Import CSV, сколько бы строк он ни добавил или ни обновил. Это шаг того листа, который заполняет файл и который затем открывается на вкладке, с какого бы листа вы его ни импортировали, — см. Импорт.

Запись, которая ничего не изменяет, например повторный импорт того же файла или сортировка листа, уже упорядоченного таким образом, шаг не записывает, как и запись, отклоненная с уведомлением Nothing saved: …. Если термину без значения Physical Name задается имя, физическое имя, составленное из его слов, входит в шаг этой правки.

Новый тип Data Type домена составляет один шаг листа Domains вместе с типами, которые он дает привязанным к домену столбцам и тем столбцам, до которых от них доходит Синхронизация типа данных в связях, — см. Домены и типы данных.
Отмена или повтор этого шага меняют тип у столбцов, привязанных к домену в этот момент, поэтому столбец, который вы с тех пор привязали к другому домену или которому изменили тип, сохраняет свой тип. Столбец, который этот шаг отвязал, например внешний ключ, который синхронизация отвязала от его собственного домена, снова привязывается, только пока он все еще не привязан и все еще имеет тип, оставленный ему этим шагом.

Редактор с атрибутом readonly скрывает кнопки, а клавиши ничего не отменяют и не повторяют.
Изменения от соавторов и агентов для программирования в историю листа тоже не записываются.

История каждого листа очищается, когда словари заменяются: импортом JSON-файла через пункт Import, вашим или соавтора, его отменой или повтором, а также загрузкой в редактор другой диаграммы. Импорт Схемы SQL, GraphQL, DBML или AML через пункт Import сохраняет словари, а вместе с ними и историю каждого листа, в том числе при его отмене и повторе.

Путешествие во времени​

Открывается кнопкой Time Travel на панели инструментов, рядом с кнопками отмены и повтора на вкладке ERD.
Кнопка ничего не делает, пока в истории изменений диаграммы нет хотя бы одного записанного изменения. В редакторе только для чтения такой кнопки нет, а редактор, который переходит в режим только для чтения, закрывает Путешествие во времени, не применяя его.

Путешествие во времени открывает отдельную копию диаграммы, доступную только для чтения, с тем положением прокрутки, масштабом и режимом отображения имен, которые показывает холст, независимо от того, включена ли блокировка Viewport или Name View.
Оно перемещается только по истории изменений диаграммы, поэтому правок листов словарей среди его точек нет.
Перетащите ползунок или щелкните в любом месте его дорожки, чтобы перемещаться по всей истории изменений и просматривать каждую точку. Крайнее левое положение ползунка — это состояние за один шаг до первого записанного изменения, а при открытии ползунок стоит на текущем состоянии.
Предварительный просмотр не интерактивен: в нем отображается мини-карта, но перемещать, прокручивать или редактировать его нельзя, а реальный документ остается нетронутым до применения.

Нажмите кнопку Apply, чтобы восстановить выбранную точку, либо кнопку Cancel или клавишу Esc, чтобы оставить документ без изменений.

Открытие Путешествия во времени, перетаскивание ползунка назад по истории сеанса и применение более ранней точки