diff --git a/MainWidget.cpp b/MainWidget.cpp
index ef4ba98..2f0e972 100644
--- a/MainWidget.cpp
+++ b/MainWidget.cpp
@@ -16,13 +16,13 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
 {
     ui->setupUi(this);
 
-    setWindowTitle(u8"OneLevelXmlOpr v1.2.11");
+    setWindowTitle(u8"OneLevelXmlOpr v1.2.12");
     setWindowIcon(QIcon("://resource/xml.ico"));
 
     QScreen* primaryScreen = QGuiApplication::primaryScreen();
     QRect    screenGeometry = primaryScreen->geometry();
     setMinimumWidth(screenGeometry.width() * 0.5);
-    setMinimumHeight(screenGeometry.height() * 0.8);
+    setMinimumHeight(screenGeometry.height() * 0.9);
     // setMinimumWidth(900);
     // setMinimumHeight(800);
 
diff --git a/src/data_edit.cpp b/src/data_edit.cpp
index 386bad2..59e441e 100644
--- a/src/data_edit.cpp
+++ b/src/data_edit.cpp
@@ -15,6 +15,8 @@ CDataEdit::CDataEdit(QWidget* parent) : QDialog(parent), ui(new Ui::CDataEdit)
     setWindowTitle(u8"源编辑");
 
     connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); });
+    connect(ui->btnReplace, &QPushButton::clicked, this, [&]() { replace(); });
+    connect(ui->btnWithDraw, &QPushButton::clicked, this, [&]() { with_draw(); });
     connect(ui->btnAdd, &QPushButton::clicked, this, [&]() { import_data(); });
     connect(ui->btnCopy, &QPushButton::clicked, this, [&]() {
         QClipboard* clip = QApplication::clipboard();
@@ -99,3 +101,20 @@ void CDataEdit::show_before()
         ui->plainTextEdit->appendPlainText(data_);
     }
 }
+
+void CDataEdit::replace()
+{
+    if (ui->edPre->text().isEmpty()) {
+        CUtil::msg(this, u8"未填入内容。");
+        return;
+    }
+    QString data = ui->plainTextEdit->toPlainText();
+    pre_content_ = data;
+    data.replace(ui->edPre->text(), ui->edAfter->text());
+    ui->plainTextEdit->setPlainText(data);
+}
+
+void CDataEdit::with_draw()
+{
+    ui->plainTextEdit->setPlainText(pre_content_);
+}
diff --git a/src/data_edit.h b/src/data_edit.h
index 6bdb012..2996a0c 100644
--- a/src/data_edit.h
+++ b/src/data_edit.h
@@ -30,6 +30,13 @@ public:
     bool is_import_{false};
     bool is_import_sucess_{false};
 
+private:
+    void replace();
+    void with_draw();
+
+public:
+    QString pre_content_{};
+
 private:
     Ui::CDataEdit* ui;
     QString        data_{};
diff --git a/src/data_edit.ui b/src/data_edit.ui
index b4e8e2a..4527302 100644
--- a/src/data_edit.ui
+++ b/src/data_edit.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>643</width>
-    <height>407</height>
+    <width>949</width>
+    <height>411</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -19,6 +19,54 @@
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>将</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="edPre">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>替换为</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="edAfter">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnReplace">
+       <property name="text">
+        <string>替换</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnWithDraw">
+       <property name="text">
+        <string>撤回</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">